国产探花免费观看_亚洲丰满少妇自慰呻吟_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 --;
  }
 }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘阴县| 普宁市| 西和县| 民乐县| 宁国市| 当阳市| 晋宁县| 冕宁县| 获嘉县| 安陆市| 周至县| 花莲市| 青海省| 冀州市| 揭西县| 灌阳县| 泊头市| 鲁山县| 托克托县| 额尔古纳市| 墨脱县| 突泉县| 垦利县| 石嘴山市| 图们市| 凌云县| 乡宁县| 准格尔旗| 台中县| 卓尼县| 恩平市| 鸡东县| 萝北县| 石屏县| 进贤县| 饶平县| 大悟县| 桓台县| 保德县| 台中市| 望谟县|