#include using namespace std;

void Input(int a[], int n) { //读入序列 for (int i = 0; i < n; i++) cin >> a[i]; }

int Search_Mid(int A[], int B[], int n) { //求解两个升序序列的中位数 int i = 0, j = 0, k = 0; int C[2 * n];

//合并两个序列
while (i < n && j < n) {
    if (A[i] <= B[j])
        C[k++] = A[i++];
    else
        C[k++] = B[j++];
}

while (i < n)
    C[k++] = A[i++];

while (j < n)
    C[k++] = B[j++];

//计算中位数
if (k % 2 == 0)
    return (C[k / 2 - 1] + C[k / 2]) / 2;
else
    return C[k / 2];

}

int main() { int n; while (cin >> n) { if (n == 0) break; int A[6], B[6]; Input(A, n); Input(B, n); cout << Search_Mid(A, B, n) << endl; } return 0; }

C++求解两个升序序列的中位数

原文地址: https://www.cveoy.top/t/topic/mSNv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录