2016-04-19 30 views
0

我很困惑,如果這些比較數字應該是100個隨機兩位數字的向量值這麼大。完整程序 - >安全鏈接:https://ideone.com/oybDbD程序輸出位於鏈接的底部頁面。欣賞輸入。插入比較#似乎太大

int insertionSort (vector<int> &v) { 
    int j, temp, counter = 0; 

    for (int i = 1; i < v.size(); i++) { 
     j = i; 

     while (++counter && j > 0 && v[j] < v[j-1]){ 
      temp = v[j]; 
      v[j] = v[j-1]; 
      v[j-1] = temp; 
      j--; 
     } 
    } 
    return counter; 
} 

回答

1

插入排序是O(N^2)的平均情況下的性能(見wiki entry)。對於100個元素的向量,因此預期的比較次數爲O(10000)。以2656出場,或者在你的第二輪比賽中,4995,因此比你預期的要低,低於

+0

只是爲了澄清,插入排序的預期比較數是10,000?感謝您的幫助:) – Lightypulse

+0

@Lightypulse:不完全。在這種情況下,比較的平均次數是「O(N^2)」,其計算結果爲「O(10000)」。期望值進入統計數據,這是一個不同的球賽。我很抱歉在那裏缺乏透明度。此外,[這個答案](https://stackoverflow.com/questions/17055341/why-is-insertion-sort-%CE%98n2-in-the-average-case)可以幫助你更好地理解發生了什麼。 – Richard

+0

@Lightypulse:如果我的回答對你有幫助,可以通過點擊箭頭或選中標記來點擊或接受它。 – Richard