您的位置:首页 > 职场人生

关于FOR循环的一道面试题

2008-07-09 23:02 309 查看
题是这样的:

下面这段代码可以怎么进行优化,理由是什么?
for(inti=0;i<=1000;i++)

for(intj=0;j<=100;j++)

for(intk=0;k<10;k++)

func();


优化方法是
for(inti=0;i<=10;i++)

for(intj=0;j<=100;j++)

for(intk=0;k<1000;k++)

func();
解释:
原来的代码运算次数上:
i<=1000;i++;运算1000*2

j<=100;j++;运算1000*100*2

k<10;k++;运算1000*100*10*2

func();运算1000*100*10
总数为:1000*2+1000*100*2+1000*100*10*2+1000*100*10
修改后的次数为:
i<=10;i++;运算10*2
j<=100;j++;运算10*100*2

k<1000;k++;运算1000*100*10*2
func();运算1000*100*10
总数为:10*2+10*100*2+1000*100*10*2+1000*100*10
就因为循环导致的比较和自增加运算多消耗的次数为:

1000*2+1000*100*2+1000*100*10*2-10*2+10*100*2+1000*100*10*2=
1000*2+1000*100*2-10*2+10*100*2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: