分享

求两个有序数组的中位数(相等)

 X的世界 2013-09-20
程序的一个关键是在每次划分子数组的时候要保证两个子数组的元素个数相等 。因此,要对元素个数做出奇偶判断。
public static int getMiddle(int[]a,int[]b,int astart,int aend,int bstart,int bend){    
  int amid=(aend+astart)/2;
  int bmid =(bend+bstart)/2;
  System.out.println("amid:"+amid+"  bmid:"+bmid);
  if(a[amid]==b[bmid]){
   System.out.println(a[amid]);
   return a[amid];
  }else if(astart==aend&&bstart==bend){
   System.out.println(a[astart]<b[bstart]?a[astart]:b[bstart]);
   return a[astart]<b[bstart]?a[astart]:b[bstart];
  }
  else if(a[amid]<b[bmid])
  {
             if((aend-astart+1)%2==0)
         return getMiddle(a,b,amid+1,aend,bstart,bmid);
             else
              return getMiddle(a, b, amid, aend, bstart, bmid);
  }
  else{
   if((bend-bstart+1)%2==0)
         return getMiddle(a,b,astart,amid,bmid+1,bend);
           else
            return getMiddle(a, b, astart, amid, bmid, bend);
   
  }
 }

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多