1、2、3、4、5と入力します。出力はすでに低から高にソートされているので、問題はありません。しかし、私はそれが出力しています5、4、3、2、1を入力すると:バブルソート:なぜ正しく動作しないのですか?
4、3、2、1、5
を私は道でバブルソートを行うにしようとしています。
main() {
int a[5], i, smallest, temp;
cout << "Enter 5 numbers: " << endl;
for (i = 0; i <= 4; i++) {
cin >> a[i];
}
for (i = 0; i <= 4; i++) {
smallest = a[i];
if (smallest > a[i+1]) {
temp = a[i];
a[i] = a[i+1];
a[i+1] = temp;
}
}
cout << endl << endl;
for (i = 0; i <= 4; i++) {
cout << a[i] << endl;
}
system("pause");
}
私はあなたの役に立つ回答した後、これに私のコードを変更しました:
for (i = 0; i <=4; i++) {
smallest = a[i];
for (j = 1; j <= 4; j++) {
if (smallest > a[j]) {
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
それは働いていない理由を私は知りません。私はプログラミングでnoobですので、本当に申し訳ありませんので、私はちょうど出発しています。私はちょうど出発しています:)
助けが高く評価されます。 。
おかげで^^
デバッガを使用してコードをステップ実行する方法を学ぶ必要があるようです。良いデバッガを使用すると、プログラムを1行ずつ実行し、どこからずれているかを確認することができます。これはプログラミングをする場合に不可欠なツールです。詳しい読書:** [小さなプログラムをデバッグする方法](http://ericlippert.com/2014/03/05/how-to-debug-small-programs/)** – NathanOliver
あなたは1回の反復を完了するだけなので –
あなたのアルゴリズムを[Wikipediaの定義](https://en.wikipedia.org/wiki/Bubble_sort)に追加してください。ループがありません。 – starturtle