插入排序错误

时间:2019-02-02 19:43:25

标签: c insertion-sort

我需要帮助来了解我的错误。我试图使插入排序,但它不是做的工作。

void insertionSort(int A[]) {
    int temp, j, d;

    for (int i = 1; i <= dim - 1; i++) {
        j = i;
        while (d > 0 && A[d-1] > A[d]) {
            temp = A[j];
            A[j] = A[j - 1];
            A[j - 1] = temp;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

d未初始化,因此将具有垃圾值。 而且我认为您必须尝试遵循

for (int i = 1; i <dim; i++) {
    j = i - 1;
    d = A[i];
    while(j>=0 && A[j-1] > d){ 

       /* other code */
       j = j-1;

    }
    A[j+1] = d;

}

答案 1 :(得分:0)

我认为您遇到以下问题:

  1. d应改为j

  2. 函数原型应为void insertionSort(int A[], int dim)

  3. 用于插入的逻辑是不正确的。

这是我根据您的源代码所做的修改:

void insertionSort(int A[], int dim)
{
    int temp, j;
    for (int i = 1; i < dim; i++) {
        temp = A[i];
        j = i;
        while (j > 0 && A[j - 1] > temp) {
            A[j] = A[j - 1];
            j--;
        }
        A[j] = temp;
    }
}