下面代码段实现了快速排序的划分操作(以首元素为基准),横线处代码应填入( )。
int partition(vector<int>& arr, int low, int high) {
int pivot = arr[low];
int i = low, j = high;
while (i < j) {
while (i < j && arr[j] >= pivot) j--;
while (i < j && arr[i] <= pivot) i++;
if (i < j) swap(arr[i], arr[j]);
}
________________; // 在此处填入代码
return i;
}STL 容器:vector(动态数组)、set/map(红黑树,有序)、unordered_set/map(哈希表,无序)。注意迭代器失效问题。
填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。
【考点】快速排序|Hoare 划分方案|指针交换逻辑
GESP 五级算法模块,排序算法专题。命题人卡住的是"背过快排代码但不懂划分过程"的考生——快排是五级高频考点,但能写出完整快排的不到 3 成,而本题只考划分,恰恰筛出那些只懂模板不会原理的人。