我正在尝试编写一个选择排序算法(随机设置十个数字,由用户输入,并按升序输出列表)。我理解算法应该如何工作,并且认为我已经弄明白了,但是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] << " ";
}
答案 0 :(得分:0)
temp = arr[0]; // You need to set it to sth diferent then 0
for(int i=0; i<10; i++)
{
if(arr[k] < temp)
{
temp = arr[k];
ind = k;
}
}
完成了。
用于排序(123):
for (i = 10; i > 0; i--)
{
for (j = 1; j <= i; j++)
{
if (numbers[j-1] > numbers[j])
{
temp = numbers[j-1];
numbers[j-1] = numbers[j];
numbers[j] = temp;
}
}
}
反向(321)
for (i = 10; i > 0; i--)
{
for (j = 1; j <= i; j++)
{
if (numbers[j-1] < numbers[j])
{
temp = numbers[j-1];
numbers[j-1] = numbers[j];
numbers[j] = temp;
}
}
}