题目大意:求出两个有序序列的中位数
算法1:sort取中间,其实我是不理解为啥那么多人题解写的那么麻烦的,又是双指针,又是队列,我的解法就是把两个序列放到一起,sort取中间就完事了,时间复杂度O(nlogn)。
算法2:如果数据范围改成较大的,可以考虑选用二分查找(注意正确姿势)
代码如下:
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std;
#define ll long long
int n,m;
ll a[500005];
int main()
{
cin >> n;
for(int i = 1;i <= n;i++)
{
cin >> a[i];
}
cin >> m;
for(int i = n+1;i <= n+m;i++)
{
cin >> a[i];
}
sort(a+1,a+1+n+m);
ll mid;
if((n+m)%2)
{
mid=(n+m)/2+1;
}else
{
mid=(n+m)/2;
}
cout << a[mid];
return 0 ;
}