下面程序实现插入排序(升序排序),则横线上应分别填写( )。
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && ________________) { // 在此处填入代码
arr[j + 1] = arr[j];
j--;
}
________________; // 在此处填入代码
}
}A.
arr[j] > key
arr[j + 1] = keyB.
arr[j] < key
arr[j + 1] = keyC.
arr[j] > key
arr[j] = keyD.
arr[j] < key
arr[j] = key答案A。代码补全要考虑参数传递方式。如果需要修改实参,需用指针(*)传递。排序算法要理解每步比较的含义。
排序代码补全要理解每步比较的含义。选择排序找最小值时比较的是array[min]>array[j]。
【考点】插入排序算法|数组元素比较与移动|while循环条件
GESP四级算法模块的核心是"基础排序与查找",插入排序作为选择排序之后的必考内容,命题人专卡"只背概念不写逻辑"的考生——很多人知道"把key插入前面",但写不出while循环里到底是"大于key才移动"还是"小于key才移动"。