题是这样的:
下面这段代码可以怎么进行优化,理由是什么?
for(int i=0;i<=1000;i++) for(int j=0;j<=100;j++) for(int k=0;k<10;k++) func();
优化方法是
for(int i=0;i<=10;i++) for(int j=0;j<=100;j++) for(int k=0;k<1000;k++) func();
解释:
原来的代码运算次数上:
i<=1000;i++; 运算1000*2j<=100;j++; 运算1000*100*2k<10;k++;运算1000*100*10*2func(); 运算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*2k<1000;k++;运算1000*100*10*2func(); 运算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