归并排序
#include <iostream>
using namespace std;
int a[1000001];
int b[1000001];
int main(){
int n,m,i;
scanf("%d",&n);
for(i=0;i<n;i++)
{ int t;
scanf("%d",&t);
a[i]=t;
}
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d",&b[i]);
}
int t=0,j=0;
int mid;
if((n+m)%2==0)mid=(n+m)/2;
else
mid=(n+m)/2+1;
int flag=0;
char c;
i=0;
while(i!=n&&j!=m)
{
if(a[i]<=b[j]){c='a';flag=i;i++;t++;}
else
{c='b';flag=j;j++;t++; }
if(t==mid)
{
if(c=='a')
cout<<a[flag]<<endl;
else
cout<<b[flag]<<endl;
return 0;
}
}
if(i<n)
{
cout<<a[mid-t+i-1]<<endl;
}
if(j<m)
cout<<b[mid-t+j-1]<<endl;
return 0;
}
本文介绍了一种基于归并排序的算法实现,该程序能够处理两个数组的数据,并找到合并后的中位数。通过输入两个数组的长度及元素,程序将返回合并数组后的中位数,适用于需要快速查找中位数的场景。
594

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



