#3800. 快速排序求第 k 小
快速排序求第 k 小
这里给你了一份快速排序相关函数的代码,它需要实现对 数组下标 之间的元素寻找第 小的功能。你需要补全这个代码。
int qsort(int a[], int l, int r, int k) {
if (l == r) {
return a[l];
}
int i = l, j = r;
int x = ①;
while (i <= j) {
while (i <= j && a[i] > x) {
i++;
}
while (i <= j && ②) {
j--;
}
if (i <= j) {
swap(a[i], a[j]);
i++;
j--;
}
}
if (③) {
return qsort(a, i, r, ④);
} else {
return qsort(⑤);
}
}
① 处 不应填 {{ select(1) }}
l
a[l]
a[r]
a[(l + r) >> 1]
② 处应填 {{ select(2) }}
a[j] > x
a[j] >= x
a[j] < x
a[j] <= x
③ 处应填 {{ select(3) }}
k <= r - i + 1
k > r - i + 1
k < r - i + 1
k >= r - i + 1
④ 处应填 {{ select(4) }}
k
k - (j - l + 1)
n - k
k - 1
⑤ 处应填 {{ select(5) }}
a, l, j, k
a, l, j - 1, k
a, l, j, k - (r - i + 1)
a, l, j - 1, k - (r - i + 1)