传送门
没啥好说的
有序数组的中位数:如果下标从0开始,中位数是(n-1)/2,或者n-1>>1,位运算不用加括号.
#include<iostream>
using namespace std;
const int N=1e5+10;
int q1[N],q2[N],q[N<<1],cnt1,cnt2,cnt;
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)cin>>q1[i];
for(int i=0;i<n;i++)cin>>q2[i];
if(n==0)
printf("NULL");
else
{
int i=0,j=0;
while(i!=n&&j!=n)
{
if(q1[i]<q2[j]) q[cnt++]=q1[i++];
else q[cnt++]=q2[j++];
}
while(i!=n)q[cnt++]=q1[i++];
while(j!=n)q[cnt++]=q2[j++];
printf("%d",q[cnt-1>>1]);
}
}