文章

36

粉丝

0

获赞

0

访问

3.8k

头像
2011年计算机学科专业基础综合试题 - 第42题回答
数据结构
发布于2025年9月19日 21:29
阅读数 141

利用二分查找来确定中位数在数组 `A`中的可能位置(假设中位数由 `A`和 `B`共同贡献),并通过检查相邻元素的关系来验证。其关键在于每次比较都能排除一半的候选位置

```c
// 判断A[midA]是否可能是中位数
int isMid(int A[], int B[], int n, int midA) {
    int midB = n - midA - 1;
    // 需要满足A[midA] >= B[midB]且A[midA] <= B[midB+1]
    if (midB >= 0 && A[midA] < B[midB]) return 0;
    if (midB < n-1 && A[midA] > B[midB+1]) return 0;
    return 1;
}

int findMid(int A[], int B[], int n) {
    int left = 0, right = n - 1;
    while (left <= right) {
        int midA = (left + right) / 2;
        int midB = n - midA - 1;
        
        if (midB >= 0 && A[midA] < B[midB]) {
            left = midA + 1;
        } else if (midB < n-1 && A[midA] > B[midB+1]) {
          &...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发