首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

!三重for循环的优化

2013-09-24 
求助!三重for循环的优化! for(int i0i1000i++){ for(int j0j100j++){ for(int k0k10k++){ fun

求助!三重for循环的优化!


 for(int i=0;i<1000;i++){
 for(int j=0;j<100;j++){
 for(int k=0;k<10;k++){
 function(i,j,k);
 }
 }
 }


代码如上:
题目是金蝶的笔试题;
大概意思是:优化上面的代码,并给出理由~~~
小的菜鸟级别····不知从何下手!求大神出现解惑!!! java 优化
[解决办法]
循环数越多越放在里面层循环。
[解决办法]
减小了栈切换的频率
[解决办法]
引用:

 for(int i=0;i<1000;i++){
 for(int j=0;j<100;j++){
 for(int k=0;k<10;k++){
 function(i,j,k);
 }
 }
 }

不能光看function的执行次数,还要看i,j,k的比较次数。
i需要比较1000次,j需要比较1000*100次,k需要比较1000*100*10次。
总的比较次数是1000+1000*100+10*100*1000次

 for(int k=0;k<10;k++){
 for(int j=0;j<100;j++){
 for(int i=0;i<1000;i++){
 function(i,j,k);
 }
 }
 }

上述代码中function执行次数一样,
但是k需要比较10次,j需要比较10*100次,i需要比较10*100*1000次。
总的比较次数是10+10*100+10*100*1000次
所以后面的代码比前面的代码少比较1000+1000*100-(10+10*100)次!
[解决办法]
int i = 0;
int j = 0;
int k = 0;
for (k = 0; k < 10; k++) {
for (j = 0; j < 100; j++) {
for (i = 0; i < 1000; i++) {
function(i, j, k);
}
}
}

[解决办法]
写错一个地方,应该是

for (int i = 0, j = 0, k = 0; i < 1000; k++) {

if (k >= 10) {
k = 0;
j++;
if (j >= 100) {
j = 0;


i++;
}
}
function(i,j,k);
}



不过好像没快多少,呵呵,快了两秒而已

热点排行