下面的快速排序程序中,两处横线处分别应填入的是( )。
void quick_sort(int a[], int n) {
if (n <= 1)
return;
int pivot = 0, l = 0, r = n - 1;
while (________) { // 在此处填入选项
while (r > pivot && a[r] >= a[pivot])
r--;
if (r > pivot) {
int temp = a[pivot];
a[pivot] = a[r];
a[r] = temp;
pivot = r;
}
while (l < pivot && a[l] <= a[pivot])
l++;
if (l < pivot) {
int temp = a[pivot];
a[pivot] = a[l];
a[l] = temp;
pivot = l;
}
}
quick_sort(a, pivot);
quick_sort(________); // 在此处填入选项
}A.
l < r
a + pivot + 1, n - pivot - 1B.
l < r
a + pivot + 1, n - pivotC.
l <= r
a + pivot + 1, n - pivot - 1D.
l <= r
a + pivot + 1, n - pivotSTL 容器:vector(动态数组)、set/map(红黑树,有序)、unordered_set/map(哈希表,无序)。注意迭代器失效问题。
填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。
【考点】快速排序|递归
GESP 八级《算法与数据结构》模块第 5 章排序算法,命题人卡住的是"不会看代码结构"——90% 考生上来就套背诵模板,却连 pivot 都找不到。