小明思考

          Just a software engineer
          posts - 124, comments - 36, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          合并排序好的數組

          Posted on 2013-04-18 13:44 小明 閱讀(1287) 評論(0)  編輯  收藏 所屬分類: 數據結構和算法
          問題給定兩個排序好的數組A和B,把B合并到A并保持排序。

          public class Solution {
              public void merge(int A[], int m, int B[], int n) {
          //write your code here
             }
          }

          注意:
          假定A有足夠的額外的容量儲存B的內容,m和n分別為A和B的初始化元素的個數。要求算法復雜度在O(m+n)。

          分析:
          為了避免使用額外的空間,這里的技巧就是從后向前合并。代碼很簡單,但是也要求基本功扎實。

          public class Solution {
              public void merge(int A[], int m, int B[], int n) {
                  int e = m+n;
                  while(m>0 && n>0){
                      if(A[m-1]>B[n-1]){
                          A[--e]=A[--m];
                      }
                      else{
                          A[--e]=B[--n];
                      }
                  }
                  if(n>0){
                      System.arraycopy(B,0,A,0,n);
                  }
              }
          }
          主站蜘蛛池模板: 沈丘县| 永和县| 惠东县| 普定县| 新源县| 策勒县| 南川市| 福贡县| 泗洪县| 东山县| 渝中区| 洪洞县| 阿拉善左旗| 濮阳市| 读书| 东阿县| 长寿区| 荔波县| 两当县| 盐津县| 攀枝花市| 天全县| 平南县| 汨罗市| 吴江市| 棋牌| 仁怀市| 宝应县| 兰坪| 乐业县| 怀仁县| 长海县| 双桥区| 威宁| 横峰县| 彭山县| 崇礼县| 龙海市| 普安县| 丹凤县| 尼木县|