我正在使用插入排序算法。如您所知,我们需要将数组元素与以前的数组元素进行比较。我尝试通过嵌套循环来做到这一点:
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
。
答案 0 :(得分:1)
发布的代码有多个问题:
j > 0
,而不是j <= 0
。pseudoJ
以避免在数组开始之前访问元素j
和在内部循环中减少i
会更简单。名称pseudoJ
令人困惑。