小明思考

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

          合并排序好的數組

          Posted on 2013-04-18 13:44 小明 閱讀(1289) 評論(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);
                  }
              }
          }
          主站蜘蛛池模板: 南康市| 密山市| 两当县| 德兴市| 托克托县| 奉新县| 苗栗市| 章丘市| 甘谷县| 资兴市| 霍林郭勒市| 望奎县| 吉首市| 金阳县| 开江县| 绥阳县| 武鸣县| 潞城市| 育儿| 江达县| 文山县| 汉源县| 天长市| 通河县| 吉木萨尔县| 永寿县| 平和县| 延吉市| 乌恰县| 汕尾市| 齐齐哈尔市| 阳曲县| 黔西县| 阿城市| 弥渡县| 南宫市| 巴彦县| 海林市| 龙游县| 肇庆市| 古蔺县|