插入排序不起作用

时间:2014-02-27 19:53:23

标签: c sorting insertion-sort

我是C的新手,我们应该制作一个插入排序的程序。以下是我的代码:

int InsertionSort(int array[], int len)
{
    unsigned int i;
    unsigned int j;
    unsigned int k;
    int temp;

    for (i = 1; i < len; i++)
    {
        j = i;
        while (j > 0 && array[i] < array[j-1])
        {
            temp = array[j-1];
            array[j-1] = array[i];
            array[i] = temp;
            j--;
        }

    }

    for (k = 0; k < len; k++)
        printf("The list at: %d\n", array[k]);
    return *array;
}



int main()
{
    int array[10] = {82, 50, 12, 68, 17, 95, 35, 23};
    int len = 8;
    //SelectionSort(array, len);
    InsertionSort(array, len);


}

排序列表应该如下所示:

[12, 17, 23, 35, 50, 68, 82, 95]

但是,当我打印出来时,我的列表看起来像这样:

[50, 12, 68, 17, 82, 35, 23, 95]

我尝试用铅笔在纸上继续我的程序,似乎没问题,但我想它不起作用......所以我想知道是否有人可以帮助指出我的代码出错了?提前致谢!

1 个答案:

答案 0 :(得分:0)

更改这些代码行

while (j > 0 && array[i] < array[j-1])
{
    temp = array[j-1];
    array[j-1] = array[i];
    array[i] = temp;
    j--;
}

while (j > 0 && array[j - 1] > array[j])
{
    temp = array[j];
    array[j] = array[j - 1];
    array[j - 1] = temp;
    j--;
}