なぜ挿入ソートの最良のケースがo(n)にあるのか理解するのに苦労していますか?
for (int i = 0; i < size; i++) {
for (int j = i; j > 0; j--) {
int k = j-1;
if( a[j] < a[k]){
int temp = a[j];
a[j] = a[k];
a[k] = temp;
}
}
}
初期配列[1,2,3,4,5]の例を考えてみましょう。サイズ=5最初のループはi=0からサイズ-1になり、2番目のループはiから1になりますが、内側のforループも0からサイズ-1まで、言い換えると、内側のforループも外側のforループと同様に(n-1)回実行されます。スワップはありませんが、比較はあります。ソートされていない配列とまったく同じになりますか?次に、n-1(外側のループ)* n --1(内側のループ)= n ^ 2-n + 1 = O(n ^ 2)
誰でも、どこが間違っているのか説明できますか?