为什么这种排序不起作用? (C)

时间:2017-01-21 14:46:59

标签: c sorting selection-sort

我正在尝试基于选择排序算法创建排序方法 使用这个当前代码,数组[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;
    }
}

2 个答案:

答案 0 :(得分:1)

内循环应该写成

for(j = i + 1; j < length; j++)
    ^^^^^^^^^        

答案 1 :(得分:0)

在i的每次迭代之后,应该对数组进行排序。您可以在i的每次迭代后打印数组,并且可以看到逻辑错误。