您的位置:首页 > 其它

寻找两个等size有序数组的中位数

2014-11-13 20:50 691 查看
#include <iostream>
#include <stdio.h>
#include <fstream>
using namespace std;
int getMid(int* a,int* b,int Ai,int Aj,int Bi,int Bj)
{
int Amid = (Ai+Aj)/2;
int Bmid = (Bi+Bj)/2;
if(Aj-Ai+1==1)
{
if(a[Ai]<b[Bi])
{
return a[Ai];
}
else
{
return b[Bi];
}
}
if(Aj-Ai+1==2)
{
if(b[Bi]>=a[Ai])
{
return b[Bi];
}
else
{
return a[Ai];
}
}
if(a[Amid] == b[Bmid])
{
return b[Bmid];
}
else
{
if(a[Amid]<b[Bmid])
{
if((Aj-Ai+1)%4==0)
{
getMid(a,b,Amid,Aj,Bi,++Bmid);
}
else
{
getMid(a,b,Amid,Aj,Bi,Bmid);
}

}
else
{
if((Aj-Ai+1)%4==0)
{
getMid(a,b,Ai,++Amid,Bmid,Bj);
}
else
{
getMid(a,b,Ai,Amid,Bmid,Bj);
}

}
}
};
int main()
{
int size;
freopen("input.txt","r",stdin);
cin>>size;
int *a=new int[size];
int *b=new int[size];
for (int i = 0; i < size; ++i)
{
cin>>a[i];
}
for (int i = 0; i < size; ++i)
{
cin>>b[i];
}
ofstream fout;
fout.open("output.txt");
fout<<getMid(a,b,0,size-1,0,size-1);
fout.close();
cout << getMid(a,b,0,size-1,0,size-1)<< endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: