该程序存在以下问题:

  1. 没有包含必要的头文件,如

  2. 函数 Search_Mid 中的数组 C 的长度应该是 2n,而不是 26。

  3. 在 while 循环中,应该是比较 A[i] 和 B[j],而不是 A[i] 和 B[i]。

  4. 函数 Search_Mid 没有考虑序列长度为奇数的情况,需要特殊处理。

  5. 在序列长度为偶数时,应该返回中间两个数的平均值,而不是单独返回一个数。

  6. 输入的两个序列长度应该相等,否则无法计算中位数。

以下是修改后的代码:

#include #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, 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] + C[k/2-1]) / 2; else return C[k/2]; }

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

#include iostream using namespace std; void Inputint a int n 读入序列 for int i = 0; i n; i++ cin ai; int Search_Midint A int B int n 求解两个升序序列的中位数 begin int i = 0 j = 0 k = 0 C2 6;

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

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