关于嵌套循环的优化问题!

来源:互联网 发布:淘宝林俊杰国际歌友会 编辑:程序博客网 时间:2024/04/30 20:38

 

在软件开发的时候,经常设计到嵌套循环,如果对嵌套循环进行必要的改进,可以大大提高运行效率。

现有代码 :
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);
        }
    }
}

这是一个典型的嵌套循环示例,经过改进后的代码如下:、

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);
        }
    }

分析:
    内大外小
    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条语句

原创粉丝点击