题目


答案
分治法版本
#include<iostream>
using namespace std;
int SearchMid(int a[],int b[],int n)
{
int s1=0,e1=n-1,s2=0,e2=n-1;
int mid1,mid2;
while(s1<e1&&s2<e2)
{
mid1=(s1+e1)/2;
mid2=(s2+e2)/2;
if(a[mid1]==b[mid2]) return a[mid1];
else if(a[mid1]<b[mid2])
{
if((s1+e1)%2==0) s1=mid1;
else s1=mid1+1;
e2=mid2;
}
else
{
if((s2+e2)%2==0) s2=mid2;
else s2=mid2+1;
e1=mid1;
}
}
if(a[s1]<b[s2]) return a[s1];
else return b[s2];
}
int main()
{
int n;
cin>>n;
int a[n],b[n],i;
for(i=0;i<n;i++)
cin>>a[i];
for(i=0;i<n;i++)
cin>>b[i];
cout<<SearchMid(a,b,n);
}
其它版本(sort函数)
https://blog.youkuaiyun.com/ljhsq/article/details/115385599
举例分析

伪代码描述

该博客详细介绍了如何使用分治法和sort函数解决寻找两个有序序列中位数的问题。提供了C++代码实现,包括分治法版本的SearchMid函数和基于sort函数的解决方案,并通过举例分析了算法的工作原理。此外,还包含了伪代码描述,帮助读者理解算法思路。
6381





