码迷,mamicode.com
首页 > 编程语言 > 详细

2011 找到两个数组中位数

时间:2019-10-20 15:46:41      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:arc   否则   bsp   思想   ||   col   class   sea   search   

思想:分别求A,B的中位数,若a=吧,则a或b为所求中位数,否则,舍弃a,b中最小者所在序列之较小一半,同时舍弃较大者所在序列较大一半,要求两次舍弃元素个数相同,重复上述过程,直到两个序列中只含一个元素为止,则较小者为所求中位数。

代码:

int search(int a[],int b[],int n)
{
    int s1,e1,mid1,s2,e2,mid2;
    s1=0;e1=n-1;s2=1;e2=n-1;
    while(s1!=e1||s2!=e2)
    {
        mid1=(s1+e1)/2;
        mid2=(s2+e2)/2;
        if(a[mid1]==b[mid2])return a[mid1];
        if(a[mid1]<b[mid2])
        {
            if((s1+e1)%2==0)//若元素个数为奇数个
            {
                s1=mid1;//舍弃a中间点以前部分并保留中间点
                e2=mid2;//舍弃b中间点以后部分并保留中间点
            }
            else
            {
                s1=mid1+1;//舍弃a中间点以前部分及中间点
                e2=mid2;//舍弃b中间点以前部分并保留中间点
            }

        }
        else
        {
             if((s1+e1)%2==0)//若元素个数为奇数个
            {
                e1=mid1;//舍弃a中间点以后部分并保留中间点
                s2=mid2;//舍弃b中间点以前部分并保留中间点
            }
            else
            {
                e1=mid1+1;//舍弃a中间点以前部分并保留中间点
                s2=mid2;//舍弃b中间点以前部分和中间点
            }
        }

    }
    return(a[s1]<b[s2]?a[s1]:b[s2]);
}

 

2011 找到两个数组中位数

标签:arc   否则   bsp   思想   ||   col   class   sea   search   

原文地址:https://www.cnblogs.com/yangmenda/p/11707755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!