2015-09-17 13 views
0

這聽起來很愚蠢,但我需要確認。 例如,我們有一個整數數組:直插,如何計算掉期?

[4 2 1 3] 

所以,當算法踢,它應該工作一樣,

1. [2 4 1 3] 
2. [1 2 4 3] 
3. [1 2 3 4] 

有人可以幫我算每一步的掉期? 從我的角度來看,它可能是1)1掉期,2)2掉期,3)1掉期。它是否正確?感謝

算法:

for(i=1; i<N; i++) 
{ 
    x = p[i]; 
    j = i -1; 
    while(x<p[j] && j>=0) 
    { 
     p[j+1] = p[j]; 
     j = j-1; 
    } 
    p[j+1] = x; 
} 
+0

哪個算法開始了?插入排序? – vish4071

+0

直插是我的老師稱之爲的。我猜它是插入排序。我在我的文章中包含了算法 – Senpai

回答

0

首先,這種算法是一個新的(它不完全插入排序,但非常接近它)

現在,這個算法確實互換的數量爲0 。它只是在做任務,根本沒有掉期。如果您撥打while內的作業號碼爲swaps,那麼是的,您是正確的。如果你想檢查一下,只需編輯你的代碼:

for(i=1; i<N; i++) 
{ 
    x = p[i]; 
    j = i -1; 
    int n=0; 
    while(x<p[j] && j>=0) 
    { 
     p[j+1] = p[j]; 
     j = j-1; 
     n++; 
    } 
    //output n, looks like c so 
    printf("%d\n",n); 
    p[j+1] = x; 
}