比较先前的数组元素以进行插入排序算法

时间:2019-04-05 07:53:51

标签: c arrays algorithm sorting

我正在使用插入排序算法。如您所知,我们需要将数组元素与以前的数组元素进行比较。我尝试通过嵌套循环来做到这一点:

scanf("%d", &size); //gets array size

int array[size];
int temp = 0;

for (int i = 0; i < size; i++) {
    scanf("%d", &array[i]);
} // Takes the index of array.

/*
 Sorting part begins.
 */

for (int j = size - 1; j <= 0; j--) {
    int pseudoJ;

    pseudoJ = j;

    while (1) {
        if (array[pseudoJ] < array[pseudoJ - 1]) {
            temp = array[pseudoJ];
            array[pseudoJ] = array[pseudoJ - 1];
            array[pseudoJ - 1] = temp;
            pseudoJ--;
        } else
            break;
    }  
}

/*
 * Sorting Par Ends.
 */

假设输入为:3(Array Elements)>3>2>1, 我希望得到1>2>3的输出,但是输出仍然是3>2>1

1 个答案:

答案 0 :(得分:1)

发布的代码有多个问题:

  • 外部循环立即退出:测试应为j > 0,而不是j <= 0
  • 内部循环应测试pseudoJ以避免在数组开始之前访问元素
  • 在外部循环中增加索引j和在内部循环中减少i会更简单。名称pseudoJ令人困惑。