選択ソート アルゴリズムをコーディングしようとしています (ユーザーが入力した 10 個の数字のランダムなセットを取得し、昇順でリストを出力します)。アルゴリズムがどのように機能するかを理解しており、それを理解していると思っていましたが、for ループの何かが期待どおりに機能しておらず、それが何であるかを理解することはできません。 .
私が遭遇している問題の例を次に示します: 入力 {9, 8, 7, 6, 5, 4, 3, 2, 1, 0}, 出力 {0, 1, 2, 3, 4, 9, 6 、7、8、9}
5 番目のインデックスは、入力した数値に関係なく、常にずれているように見えます。ただし、元の数値セットに特定の数値の倍数が含まれている場合は、特定するのが難しい他のエラーが発生します。5番目のインデックスの問題を解決した後、他の問題が解決されるか、少なくとも特定が容易になることを願っています.
以下は、私のメイン関数全体です(実際にメインと呼ばれる部分を除いたものです)。
int arr[10];//array of integers input by user
int num; //smallest number in array
int temp; //temp variable for swapping numbers
int ind; //index of where temp was found
cout << "Enter ten random integers: " << endl;
for(int i=0; i<10; i++)
{
cout << "[" << i << "] = ";
cin >> arr[i];
}
cout << endl;
for (int j=0; j<10; j++)
{
num = arr[j];
temp = arr[j];
for (int k=j; k<10; k++) /*after this loop, temp should have lowest int and ind
should have its location*/
{
if(temp > arr[k])
{
temp = arr[k];
ind = k;
}
}
arr[j] = temp;
arr[ind] = num;
}
for(int l = 0; l<10; l++)
{
cout << arr[l] << " ";
}