文章
36
粉丝
0
获赞
0
访问
3.8k
利用二分查找来确定中位数在数组 `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]) {
&...
登录后发布评论
暂无评论,来抢沙发