私のinsertionSort関数は小さな配列では機能しますが、50,000個のランダムな値を持つ配列では機能しません。私はこれを理解しようと時間を費やしましたが、私は困惑しています。ここでは、コードは次のようになります。大きな配列ではC++の挿入ソートが機能しません
void insertionSort(int array[], int length) {
int swapHolder, counter, index;
for (counter = 1; counter < length; counter++) {
index = counter;
while (counter > 0 && array[index - 1] > array[index]) {
swapHolder = array[index];
array[index] = array[index - 1];
array[index - 1] = swapHolder;
index--;
}
}
}
私の他のソート機能(バブルソート)は、大規模な配列のために正常に動作しますが、私はこの問題にハングアップしています。
「うまくいかない」と答えると、それはどういう意味ですか?あなたは、[最小、完全で、かつ実証可能な例](http://stackoverflow.com/help/mcve)を作成して私たちを見せてください。そして、[良い質問をする方法について](http://stackoverflow.com/help/how-to-ask)を読んでください。 –
なぜあなたはそれをインクリメントするのではなく 'index'を減らすのですか?O_o – mangusta
...これは常に真実だから" counter> 0 "をチェックするのはなぜですか?保証される。 'counter 'は常に少なくとも1であり、減算されません。この質問への答えは、「あなたの挿入ソートの実装は間違っています。 –