组合题

三 完善程序(单选题,每小题 3 分,共计 30 分) (1)(归并第 k 小) 已知两个长度均为 n 的有序数组 a1 和 a2(均为递增序,但不保证严 格单调递增),并且给定正整数 k(1≤k≤2n),求数组 a1 和 a2 归并排序后的数组里 第 k 小的数值。

试补全程序。

#include <bits/stdc++.h>using namespace std; int solve(int *a1, int *a2, int n, int k) {    int left1 = 0, right1 = n - 1;    int left2 = 0, right2 = n - 1;    while (left1 <= right1 && left2 <= right2) {        int m1 = (left1 + right1) >> 1;        int m2 = (left2 + right2) >> 1;        int cnt = ①;        if (②) {            if (cnt < k) left1 = m1 + 1;            else right2 = m2 - 1;        } else {            if (cnt < k) left2 = m2 + 1;            else right1 = m1 - 1;        }    }    if (③) {        if (left1 == 0) {            return a2[k - 1];        } else {            int x = a1[left1 - 1], ④;            return std::max(x, y);        }    } else {            if (left2 == 0) {                return a1[k - 1];            } else {                int x = a2[left2 - 1], ⑤;                return std:: max(x, y);            }    }}
第34题单选题原卷 3 分

①处应填( )

填写答案
第35题单选题原卷 3 分

②处应填( )

填写答案
第36题单选题原卷 3 分

③处应填( )

填写答案
第37题单选题原卷 3 分

④处应填( )

填写答案
第38题单选题原卷 3 分

⑤处应填( )

填写答案