在软件开发的时候,经常设计到嵌套循环,如果对嵌套循环进行必要的改进,可以大大提高运行效率。
现有代码 :
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条语句