第20664题 单选
关于下述C++实现的快速排序算法,下列说法错误的是哪一项?
int partition(vector<int>& arr, int low, int high) {
    int i = low, j = high;
    int pivot = arr[low]; // 以首元素为基准
    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]);
    }
    swap(arr[i], arr[low]);
    return i;
}
void quickSort(vector<int>& arr, int low, int high) {
    if (low >= high) return;
    int p = partition(arr, low, high);
    quickSort(arr, low, p - 1);
    quickSort(arr, p + 1, high);
}
A

快速排序平均情况下运行速度较快,常数小、就地排序,实践中通常比归并排序更高效。

B

平均情况下,划分的递归层数为 log n,每层总循环数为 n,总时间为 O(n log n)。

C

最差情况下,每轮划分操作将长度为n的数组划分为0和n-1的子数组,递归层数达n,总时间为O(n²)。

D

划分函数 partition 中“从右往左查找”与“从左往右查找”的顺序可以交换。