zoukankan      html  css  js  c++  java
  • 关于多层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条语句 


  • 相关阅读:
    YYC松鼠视频pro版安装实操001
    YYC松鼠视频短信对接教程
    此处指讲解自定义的一些目录结构及组件-yyc松鼠短视频系统
    APP启动无视频数据-YYC松鼠短视频系统
    后台提示登录失败----YYC松鼠短视频开源
    C++静态成员变量和静态成员函数
    内联函数和宏定义的区别
    C++中的接口继承和实现继承
    拷贝构造函数(define)
    类的封装
  • 原文地址:https://www.cnblogs.com/tlnshuju/p/6768233.html
Copyright © 2011-2022 走看看