✏️ 纠错
第 163 题 / 共 201 题
第12题 下面quick_sort函数试图实现快速排序算法,两处横线分别应该填入的是()。
void swap(int &a, int &b) {
    int temp = a; a = b; b = temp;
}

int partition(int a[], int l, int r) {
    int pivot = a[l], i = l + 1, j = r;
    while (i <= j) {
        while (i <= j && a[j] >= pivot)
            j--;
        while (i <= j && a[i] <= pivot)
            i++;
        if (i < j)
            swap(a[i], a[j]);
    }
    ______;        // 在此处填入选项
    return ______; // 在此处填入选项
}
void quick_sort(int a[], int l, int r) {
    if (l < r) {
        int pivot = partition(a, l, r);
        quick_sort(a, l, pivot - 1);
        quick_sort(a, pivot + 1, r);
    }
}
📝 题目解析

答案:D

考纲知识点:快速排序

解析:第一处:需要将基准值放到正确位置,即交换a[l]和a[j](因为j是最后一个小于基准值的位置),第二处:返回基准值的最终位置j。