新しい質問を始めます。私は昨日質問をしましたが、私のプログラムで何が問題なのか知りたいと思っていました。プログラムを以下に示しますが、この次のプログラムはソートのパスを 1 つしか実行せず、外側のループも必要であると指摘されました。その時、私はOKのように良かったです。しかし、もう一度プログラムを見たときに混乱し、並べ替えを実行できるのは単一のループのみであるため、並べ替えに外部ループも必要な理由を尋ねる必要があります(私の意見では)。最初に以下のプログラムを参照してから、プログラムの最後にロジックを示します。
#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 < 9; 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<9;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ループで繰り返されないことを確認しようとしているのかもしれません。私の意見では、そうです。私の質問は小さなレベルのものかもしれませんが、それが私がどのように進歩するかです。