コードに問題がないか何度もチェックしましたが、バブルソートプログラムが正しい出力を提供しない理由を理解できません。識別を手伝ってもらえますか?
#include <iostream.h>
#include <conio.h>
using namespace std;
main()
{
int number[10];
int temp=0;
int i=0;
cout<<"Please enter any ten numbers to sort one by one: "<<"\n";
for (i=0;i<10;i++)
{
cin>>number[i];
}
i=0;
for (i=0;i<10;i++)
{
if(number[i]>number[i+1])
{
temp=number[i+1];
number[i+1]=number[i];
number[i]=temp;
}
}
i=0;
cout<<"The sorted numbers are given below:"<<"\n";
for (i=0;i<10;i++)
{
cout<<number[i]<<"\n";
}
getch();
}
編集:私はあなた方全員が外側のループがなければならないと言ったことを受け入れました。しかし、もう一度私は自分が書いたものについて考えています。バブル状態の唯一のループがソートを行うべきだと思います。これが私が考えていることです:
for (i=0;i<10;i++)
if(number[i]>number[i+1])
{
temp=number[i+1];
number[i+1]=number[i];
number[i]=temp;
}
}
ここで、このループが「すべき」ことを私が考えていることを説明します。まず、number[0]とnumber[1]を比較します。条件が満たされると、IFステートメントの本文にあることを実行します。次に、iが1(i ++)ずつインクリメントされます。次に、次の反復で、比較される値はnumber[1]とnumber[2]になります。では、なぜそれが起こらず、パスしただけでループが終了するのでしょうか。言い換えれば、私はIFステートメントがforループで繰り返されないようにしようとしているのでしょうか?私の意見ではそうです。私は助けと意見にとても感謝しています。私の質問は小さなレベルかもしれませんが、それが私がどのように進歩するかです。ありがとう。