这段代码有一个错误:

  • 在求解两个升序序列的中位数时,应该是比较A[i]和B[j]的大小,而不是A[i]和B[i]的大小,因为两个序列的下标不一定相同。

修改后的代码如下:

#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++]; return C[n-1]; }

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; }

#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 C2n; w

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

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