高效合併排序數組:一種改進的方法
要將兩個排序數組合併為一個排序數組,可以採用多種程式方法。然而,最有效且最常推薦的技術之一如下:
此演算法同時迭代兩個數組,比較每個目前索引處的元素並將較小的元素附加到輸出數組。這一過程一直持續到其中一個陣列耗盡為止。然後附加另一個數組中的任何剩餘元素。
以下是Java 中此演算法的最佳化實作範例:
public static int[] merge(int[] a, int[] b) { int[] answer = new int[a.length + b.length]; int i = 0, j = 0, k = 0; while (i < a.length && j < b.length) answer[k++] = a[i] < b[j] ? a[i++] : b[j++]; while (i < a.length) answer[k++] = a[i++]; while (j < b.length) answer[k++] = b[j++]; return answer; }
此方法的時間複雜度為O(n m ),其中n 和m 分別表示陣列a 和b 的長度。這個改進的版本消除了不必要的耗盡檢查,並採用緊湊的 while 循環結構來實現高效合併。
以上是我們如何有效合併兩個已排序的陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!