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

来源:互联网 发布:struct node *link,*p 编辑:程序博客网 时间:2024/06/06 03:00
#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;}

0 0
原创粉丝点击