少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks
          設x[1…n],y[1…n]為兩個數組,每個包含n個已知的排好序的數,給出一個數組x和y中所有2n個元素的中位數,要求時間復雜度為O(lgN)

          這是算法導論上面的一道題目:

          public class FindMedianTwoSortedArray {
          public static int median(int[] arr1, int l1, int h1, int[] arr2, int l2, int h2)
              {
          System.out.println("-----------");
                  int mid1 = (h1 + l1 ) / 2;
                  int mid2 = (h2 + l2 ) / 2;
                  if (h1 - l1 == 1)
                      return (Math.max(arr1[l1] , arr2[l2]) + Math.min(arr1[h1] , arr2[h2]))/2;
                  else if (arr1[mid1] > arr2[mid2])
                      return median(arr1, l1, mid1 , arr2, mid2 , h2);    
                  else
                      return median(arr1, mid1 , h1, arr2, l2 , mid2 );    
              }     
          public static void main(String[] args) {
          int[] a = new int[]{0,1,2};
          int[] b = new int[]{1,2,3};
          int result = median(a, 0, a.length-1,b,0,b.length-1);
          System.out.println(result);
          }
          }


          posted on 2014-11-17 21:47 abin 閱讀(451) 評論(0)  編輯  收藏 所屬分類: algorithm
          主站蜘蛛池模板: 红安县| 轮台县| 原阳县| 澳门| 治多县| 翼城县| 合山市| 苏尼特左旗| 抚宁县| 洪洞县| 泰宁县| 宝丰县| 庆云县| 梁平县| 丹巴县| 修文县| 麻栗坡县| 银川市| 阿坝县| 桂阳县| 玉林市| 昌乐县| 池州市| 喀喇沁旗| 和田市| 广饶县| 偏关县| 彭山县| 肥东县| 成安县| 新宁县| 长子县| 阳春市| 临安市| 宾川县| 墨江| 肇东市| 随州市| 泸州市| 石林| 元江|