下述C++代码实现了快速排序算法,下面说法错误的是( )。

ne711518 单选题 共 个子题
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$,每层中的循环数为 $n$,总时间为 $O(n^2)$。

D

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

正在加载题目数据…
已答 /
子题
该题型需在试卷/作业中作答,单题练习暂不支持
答案解析
讨论
发布
登录后参与讨论 立即登录
发布讨论需先绑定并验证手机号 去绑定手机号
加载中…
我
我
回复 @
回复 @
发送
还没有人讨论,来发表第一条吧