国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java解一個比較特殊的數組合并題

2019-11-26 15:29:15
字體:
來源:轉載
供稿:網友
給定兩個排序后的數組A和B,其中A的末端有足夠的空間容納B,編寫一個方法將B合并到A并排序。

拿到這個題后,最直接的想法就是比較A和B中的元素,并按順序插入數組,直到遍歷完A和B中的所有元素。但是這樣做會有一個不好的地方:如果元素的插入位置在數組A的前端,那就必須將原來的數組往后移動。這會增加開銷。但是我們可以使用另外的一種辦法將元素插入數組A的末端。這樣我們不會出現元素移動的情況!代碼如下:
    
復制代碼 代碼如下:
/*
  * lastA:a中的實際元素數  lastB:b中的實際元素數 mergeIndex是新數組的實際空間大小
       */
      public static void mergeOrder(int[] a, int[] b, int lastA, int lastB) {
  int indexA = lastA - 1;
  int indexB = lastB - 1;
  int mergeIndex = lastA + lastB - 1;
  while (indexA >= 0 && indexB >= 0) {
   if (a[indexA] > b[indexB]) {
    a[mergeIndex] = a[indexA];
    mergeIndex --;
    indexA --;
   } else {
    a[mergeIndex] = b[indexB];
    mergeIndex --;
    indexB --;
   }
  }

  while (indexB >= 0) {
   a[mergeIndex] = b[indexB];
   mergeIndex --;
   indexB --;
  }
 }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 博乐市| 包头市| 南安市| 东明县| 雷山县| 含山县| 图片| 开封县| 安远县| 武定县| 隆林| 郯城县| 渭南市| 泽州县| 珲春市| 东山县| 介休市| 西畴县| 诸城市| 杭锦后旗| 马尔康县| 汉寿县| 澜沧| 衡山县| 新宾| 平阳县| 德兴市| 巴青县| 青冈县| 葫芦岛市| 万安县| 尉氏县| 长治市| 东港市| 镶黄旗| 汽车| 鲁山县| 兰西县| 南汇区| 绥芬河市| 莱阳市|