程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java解一個比擬特別的數組歸並題

java解一個比擬特別的數組歸並題

編輯:關於JAVA

java解一個比擬特別的數組歸並題。本站提示廣大學習愛好者:(java解一個比擬特別的數組歸並題)文章只能為提供參考,不一定能成為您想要的結果。以下是java解一個比擬特別的數組歸並題正文


給定兩個排序後的數組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 --;
  }
 }
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved