您的位置:首页 > 其它

关于循环执行效率问题

2013-09-23 00:11 225 查看
在软件开发的时候,经常设计到嵌套循环,如果对嵌套循环进行必要的改进,可以大大提高运行效率。

现有代码 :

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条语句 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  循环