我正在尝试编写一个选择排序算法(随机输入十个数字,由用户输入,并按升序输出列表)。我了解该算法应该如何工作,并认为我已经弄清楚了,但是 for 循环中的某些东西并没有按照我期望的方式工作,而且我终其一生都无法弄清楚它是什么.
这是我遇到的问题的示例:输入 {9, 8, 7, 6, 5, 4, 3, 2, 1, 0},输出 {0, 1, 2, 3, 4, 9, 6 , 7, 8, 9}
无论我输入什么数字,第五个索引似乎总是关闭。但是,如果原始数字集具有任何给定数字的倍数,那么就会出现其他难以查明的错误。我希望在解决第五个索引问题后,其他问题将得到解决,或者至少更容易查明。
下面是我的主要功能的全部(减去它实际说的主要部分)。
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] << " ";
}