国产探花免费观看_亚洲丰满少妇自慰呻吟_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 --;
  }
 }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 富平县| 芷江| 江门市| 永胜县| 保靖县| 宁武县| 苏尼特左旗| 太谷县| 巴楚县| 九龙坡区| 黄山市| 遂川县| 团风县| 金川县| 昭觉县| 长沙县| 上高县| 刚察县| 西贡区| 瓮安县| 犍为县| 育儿| 夏津县| 滁州市| 江油市| 枣强县| 博爱县| 揭西县| 名山县| 清丰县| 中西区| 昌黎县| 东光县| 遂昌县| 罗田县| 尉犁县| 湖州市| 金阳县| 定结县| 桦甸市| 灵宝市|