2016-04-19 7 views
0

これらの比較番号が100個のランダムな2桁の数字を持つベクトルの値が大きいと仮定すると混乱します。完全なプログラム - >安全なリンク: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

挿入ソートの平均的な場合の性能は(wiki entry参照)O(N^2)あります。したがって、100要素のベクトルの場合、期待される比較数はO(10000)です。 2656で出てくるか、2回目の4995で比較するとより低くなるでしょう。

+0

明確にするために、挿入ソートの予想される比較数は10,000ですか?助けてくれてありがとう:) – Lightypulse

+0

@ライトパルス:まあまあです。比較の平均回数は 'O(N^2)'であり、ここでは 'O(10000)'と評価されます。期待値は統計値になります。これは別の野球ゲームです。そこに明瞭さの欠如に対する私の謝罪。また、[この回答](https://stackoverflow.com/questions/17055341/why-is-insertion-sort-%CE%98n2-in-the-average-case)は、何が起こっているのかを理解するのに役立ちます。 – Richard

+0

@ライトパルス:私の答えがあなたにとって有益だった場合は、矢印をクリックするか、チェックマークをつけてupvoteまたはacceptvを自由にしてください。 – Richard

関連する問題