C++求解两个升序序列的中位数
#include
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; }
原文地址: https://www.cveoy.top/t/topic/mSNv 著作权归作者所有。请勿转载和采集!