组合题
#include <iostream>#include <cstdlib>using namespace std; int n;int d[10000]; int find(int L, int R, int k) {    int x = rand() % (R - L + 1) + L;    swap(d[L], d[x]);    int a = L + 1, b = R;    while (a < b) {        while (a < b && d[a] < d[L])            ++a;        while (a < b && d[b] >= d[L])            --b;        swap(d[a], d[b]);    }    if (d[a] < d[L])        ++a;    if (a - L == k)        return d[L];    if (a - L < k)        return find(a, R, k - (a - L));    return find(L + 1, a - 1, k);} int main() {    int k;    cin >> n;    cin >> k;    for (int i = 0; i < n; ++i)        cin >> d[i];    cout << find(0, n - 1, k);    return 0;}

假设输入的 n,kn,k 和 d[i]d[i] 都是不超过 1000010000 的正整数,且 kk 不超过 nn,并假设 rand() 函数产生的是均匀的随机数,完成下面的判断题和单选题:

第22题判断题原卷 1.5 分

第 99 行的 xx 的数值范围是 L+1L+1 到 RR,即 [L+1,R][L+1,R]。( )

填写答案
第23题判断题原卷 1.5 分

将第 1919 行的 d[a] 改为 d[b],程序不会发生运行错误。( )

填写答案
第24题单选题原卷 2.5 分

(2.5 分)当输入的 d[i]d[i] 是严格单调递增序列时,第 17 行的 swap 平均执行次数是( )。【编者注:本题为错题,请选择 A 获取对应的分数】

填写答案
第25题单选题原卷 2.5 分

(2.5 分)当输入的 d[i]d[i] 是严格单调递减序列时,第 17 行的 swap 平均执行次数是( )。

填写答案
第26题单选题原卷 2.5 分

(2.5 分)若输入的 d[i]d[i] 为 ii,此程序①平均的时间复杂度和②最坏情况下的时间复杂度分别是( )。

填写答案
第27题单选题原卷 2.5 分

(2.5 分)若输入的 d[i]d[i] 都为同一个数,此程序平均的时间复杂度是( )。

填写答案