我正在尝试基于选择排序算法创建排序方法 使用这个当前代码,数组[10,9,8 ... 1]是"排序"至 [9,8 ... 2,10,1] 我的意思是,它甚至不能把10放在正确的位置
10 9 8 7 6 5 4 3 2 1
"排序"到
9 8 7 6 5 4 3 2 10 1
问题是什么?
void selectionSort(int array[], int length)
{
int i = 0, j = 0, temp = 0, swap = 0;
for(i = 0; i < length; i++)
{
temp = i;
for(j = 0; j < length; j++)
{
if(array[temp] > array[j])
{
temp = j;
}
}
swap = array[temp];
array[temp] = array[i];
array[i] = swap;
}
}
答案 0 :(得分:1)
内循环应该写成
for(j = i + 1; j < length; j++)
^^^^^^^^^
答案 1 :(得分:0)
在i的每次迭代之后,应该对数组进行排序。您可以在i的每次迭代后打印数组,并且可以看到逻辑错误。