并归就好~~估计数据大 直接用scanf了 怕cin超时
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector <long long> l1;
vector <long long> l2;
int N1, N2;
int main() {
long long temp = 0;
scanf("%d", &N1);
for (int i = 0; i < N1; i++) {
scanf("%lld", &temp);
l1.push_back(temp);
}
scanf("%d", &N2);
for (int i = 0; i < N2; i++) {
scanf("%lld", &temp);
l2.push_back(temp);
}
int i = 0, j = 0;
int len = N1 + N2 + 1;
len /= 2;
len;
int mid;
bool isFind = false;
int count = 0;
while (i < N1 && j < N2 && !isFind) {
if (l1[i] < l2[j]) {
count++;
if (count == len) {
mid = l1[i];
isFind = true;
break;
}
i++;
}
else {
count++;
if (count == len) {
mid = l2[j];
isFind = true;
break;
}
j++;
}
}
if (!isFind) {
while (i < N1) {
count++;
if (count == len) {
mid = l1[i];
isFind = true;
break;
}
i++;
}
}
if (!isFind) {
while (j < N2) {
count++;
if (count == len) {
mid = l2[j];
isFind = true;
break;
}
j++;
}
}
cout << mid << endl;
system("pause");
return 0;
}
本文介绍了一种通过合并两个已排序的长整型数组来找到中位数的算法。使用了C++语言,并利用了标准输入输出进行数据交互。算法首先读取两个数组的长度,然后分别读取数组元素,并通过迭代比较的方式确定中位数。
165

被折叠的 条评论
为什么被折叠?



