コンパイルすると、読み取りアクセス違反のエラーが発生します。他のスタックオーバーフローポストは、これは無限ループのためだと言います。値が非常に大きな負の数になることもわかりました。私はリスト[-1]だからと推測していますが、リスト[0]を超えないように変更する方法はわかりません。C++挿入ソートエラー
挿入ソートコード
void insertion_sort(int list[], int length) {
for (int i = 1; i < length; i++) {
for (int j = i; (j > 0) && (list[j] < list[j - 1]); j--) {
swap(list, list[j - 1], list[j]);
}
}
}
スワップ機能コード
void swap(int list[], int & src, int & dest){
int temp = list[src];
list[src] = list[dest];
list[dest] = temp;
}
推測しないでください。デバッガを使用します。スワップするパラメータが何を意味するのかを決めることはできません。あなたがデバッガでコードを踏んだ場合、これは気づいたでしょう。 –
ありがとう、私はデバッガでそれを通過し、私は位置の代わりに値を入力していることに気づいた。 – kltwoa
値の入力だけでなく、値への参照。これにより、リストを渡す必要はありません。単純に 'temp = src; src = dest; dest = temp; 'を呼び出し、残りの部分をコンパイラに処理させます。 – user4581301