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

嵌套循环的优化,该如何处理

2011-12-31 
嵌套循环的优化金蝶的面试题现有代码for( int i0i1000i++){for(int j0j100j++){for(int k0k10

嵌套循环的优化
金蝶的面试题
现有代码
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);
  }
  }



有没有办法优化下,
我写的是把循环次数少的层放到外边,好像没意义呀

[解决办法]
int a = 0, b = 0, c = 0;
for (int i = 1000; i > 0; i--, a++) {
for (int j = 100; j > 0; j--, b++) {
for (int k = 10; k > 0; k--, c++) {
function(a, b, c);
}
}
}

减运算是不是比加要快?
[解决办法]
通过函数的嵌套调用来解循环的嵌套。

Java code
    public void  f3(){        for (int i = 0; i<1000; i++){            f2(i);        }            }            public void f2(int i){        for (int j = 0; j<100; j++){            f1(j);        }            }            public void f1(int j){        for (int k = 0; k<10; k++){         function(i,j,k);                              }    }
[解决办法]
把循环次数最多的放在循环的最内层
效率会相应提高的

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


}
这样的话
结果不会受到什么影响的
但是效率会相应的提高

热点排行