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 j = 0; i < 100; j++){
for(int k = 0;k < 10; k++ ){
fun(i,j,k);
}
}
}
今天笔试的时候遇到这么一道题目 说有上面这么循环嵌套 ,问怎么优化 并说明原因。
是i,还是j;
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条语句
将循环变量的实例化放到循环外,这样可以进一步减少相关循环变量的实例化次数