for迴圈巢狀執行效率

2022-07-28 05:00:16 字數 699 閱讀 8332

今天做專案時遇到乙個for迴圈的巢狀問題,乙個迴圈次數多,乙個次數少,怎樣設計效率較高.

想起以前筆試時遇到過這個問題,當時由於時間倉促,沒有細想,今天在實際**中遇到這麼問題,於是動筆算了下.

設兩個迴圈次數分別為m、n,m為乙個很大的數,n為乙個較小的數。假設在m迴圈中第i(0則大迴圈套小迴圈所需的運算次數y1=(i-1)*n+j;

小迴圈套大迴圈所需的運算次數y2=(j-1)*m+i;

令f(i,j)=y1-y2=(n-1)*i+(1-m)*j+m-n

當f(i,j)>0時,

由此我們可以得到函式影象

通過計算相應面積所佔的比例,我們可以算出相應的概率:

p1為大迴圈套小迴圈運算次數比較多的概率

p2為小迴圈套大迴圈運算次數比較多的概率

令m=k*n,則上式變為:

我們假設n=10,則可以得到函式影象為

橫座標為k,藍色為p1概率,黃色為p2概率,從圖中可以看出,

當k=1時,即m=n時,兩著效率一樣;

當k>1時,即m>n時,大迴圈套小迴圈的運算次數比較多,

當k趨向正無窮時,大迴圈巢狀小迴圈和小迴圈巢狀大迴圈運算次數的比例為(n+1)/(n-1)

因此,我們可以得出結論,一般情況下,小迴圈放在大迴圈外面的效率比較高.

當然,這也不是絕對的,具體專案中,因為資料儲存結構或者其他原因,也有可能導致大迴圈放在外面效率比較高.

for迴圈執行效率

include include include include define a 10000 define b 10 define num 100000 void main double a a b double b 0 int t1 clock for int n 0 n 第一種情況是內外層迴圈次...

雙重迴圈巢狀執行原理

對於有規律,且遞增或遞減的一些案例,使用雙重迴圈巢狀解決比較方便,而且 相對簡潔。首先要知道雙重迴圈的執行原理 第一次進入外層迴圈,第一次內層迴圈開始,直到內層迴圈結束,執行第二次外層迴圈 第二次進入外層迴圈,第二次內層迴圈開始,直到內層迴圈結束,執行第三次外層迴圈 以此類推。for迴圈比較常用,f...

雙重for迴圈巢狀執行原理

先簡單介紹下單個for迴圈的原理 for 定義變數 迴圈條件 變數變化 1 定義變數在進入迴圈前執行一次 2 迴圈條件是每次進入迴圈之前都會執行並判斷 3 變數變化是每次完成迴圈語句塊後執行的內容 下面看一段 逆戰 停課不停學 加油!for i 1 i 5 i 當執行程式時,先執行外層 i 的迴圈 ...