题目:
(1)算法思想
1.分别找出s1,s2的中位数a,b,再比较他们大小,如果相等返回a,如果不等执行一下步骤
2.如果a>b,将s1的稍大的部分去掉,s2稍小的部分去掉
3.如果a<b,反过来即可
4.重复2,3步骤直到两个数列中只含有一个元素为止,且较小的那个为中位数
注:在去掉时,要区分n为奇数和偶数,特别是为偶数时
例子:如果a>b时,n为偶数,s1为首数,e1为尾数,m1为中位数
即:e1=m1,s2=m2+1(去掉中位数及前面的数)
(2)详细算法
int find(int A[],int B[],int n)
{
int s1=0,e1=n-1,m1,s2=0,e2=n-1,m2;
while(s1!=e1||s2!=e2)
{
m1=(s1+e1)/2,m2=(s2+e2)/2;
int a=A[m1],b=B[m2]
if(a==b)
return a;
else if(a>b)
{
if((s1+e1)%2=