迴圈巢狀優化!!

2021-05-09 12:27:11 字數 1711 閱讀 8917

第一部分說明:1 將大的迴圈放到內測,小的迴圈放到外側,確實能提高效率

/*** 全面測試巢狀多層for迴圈的效能。

* * @author 老紫竹的家(laozizhu.com)

* */

public class testforloop }}

system.out.println(system.currenttimemillis() - t);

// 大迴圈在外面,小迴圈在裡面,變數統一生成

t = system.currenttimemillis();

int i, j, k;

for (i = 1; i <= large; i++) }}

system.out.println(system.currenttimemillis() - t);

// 小迴圈在外面,大迴圈在裡面,變數每次生成

t = system.currenttimemillis();

for (int kk = 1; kk <= small; kk++) }}

system.out.println(system.currenttimemillis() - t);

// 小迴圈在外面,大迴圈在裡面,變數統一生成

t = system.currenttimemillis();

int ii, jj, kk;

for (kk = 1; kk <= small; kk++) }}

system.out.println(system.currenttimemillis() - t);}}

測試執行結果

5625

3125

609594

注意,不同機器結果肯定不同,且有可能是如下的結果

5641

3140

594625

測試結論:

1 將大的迴圈放到內測,小的迴圈放到外側,確實能提高效率

2 變數的宣告,原則上是能提高效率的(從第乙個看,效果差距很大),但在迴圈次數少的時候,並不明顯,有時反倒會影響效率。

分析:

內大外小

for( int k=0;k <10;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++)

} } 

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條語句

第二部分:由++變成--

for(

inti

=1000

;i>0;i

--)}}

迴圈巢狀的優化

基本for迴圈巢狀九九乘法表 public class test system.out.println 基本for迴圈列印100以內的質數 public class test if flag flag true 100以內的質數最優化 使用標籤 public class test system.ou...

巢狀迴圈的優化

今天拿到這樣乙個需求 有map a和map b,這兩個map都持有著乙個同樣的key id,其對應的value可能相同,也可能不相同。現在需要對兩個map中該key對應的value相同的鍵值對做些特殊的操作。這是個很簡單的需求,很簡單,我直接乙個迴圈裡巢狀另乙個迴圈去實現這個功能需求 for map...

23 迴圈巢狀中演算法優化

100000以內的所有質數的輸出 體會演算法的優化一 public class primenumber1 if fag fag true system.out.println 質數個數為 even long end system.currenttimemillis system.out.printl...