关于多层for循环迭代的效率优化问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于多层for循环迭代的效率优化问题相关的知识,希望对你有一定的参考价值。

关于多层for循环迭代的效率优化问题
今天笔试的时候遇到这么一道题目  说有上面这么循环嵌套  。问怎么优化 并说明原因。   
 for(int i = 0 ; i < 1000 ;i++){
     for(int j = 0; i < 100; j++){
        for(int k = 0;k < 10; k++ ){
              fun(i,j,k);
        }
    }
}

咋一看,被这个题目蒙到了,可能是由于平时没怎么注意这些方面。因此上网找了些资料来学习一下。

对于这样的多层循环的遍历,我们的一个原则是内大外小。



内大外小  
  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);  
  }  
  }  
  }   
  k <10;k++; 运行10次  
  j <100;j++ 运行10*100次  
  i <1000;i++ 运行10*100*1000次  
  function(i,j,k); 运行10*100*1000次  
  共运行语句数=(10+10*100+10*100*1000)*2+10*100*1000=3002020 


  内小外大  
  for( int k=0;k <1000;k++){  
  for(int j=0;j <100;j++){  
  for(int i=0;i <10;i++){  
  function(i,j,k);  
  }  
  }  
  }   
  k <1000;k++; 运行1000次  
  j <100;j++ 运行1000*100次  
  i <10;i++ 运行10*100*1000次  
  function(i,j,k); 运行10*100*1000次  
  共运行语句数=(1000+1000*100+10*100*1000)*2+10*100*1000=3202000  

所以运行效率应该是内大外小更高一写  
  内小外大-内大外小=3202000条语句-3002020条语句=199980条语句 


以上是关于关于多层for循环迭代的效率优化问题的主要内容,如果未能解决你的问题,请参考以下文章

优化 iOS 应用的迭代 for 循环 [关闭]

多层感知器:ConvergenceWarning:随机优化器:达到最大迭代次数,优化尚未收敛。警告?

javascript中,while循环与for循环执行效率上的差异?

web性能优化--算法优化

如何优化js代码

Python入门-4控制语句:09循环代码优化技巧(重要)-zip()并行迭代