首頁 >Java >java教程 >我們如何有效合併兩個已排序的陣列?

我們如何有效合併兩個已排序的陣列?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-30 12:27:111068瀏覽

How Can We Efficiently Merge Two Sorted Arrays?

高效合併排序數組:一種改進的方法

要將兩個排序數組合併為一個排序數組,可以採用多種程式方法。然而,最有效且最常推薦的技術之一如下:

此演算法同時迭代兩個數組,比較每個目前索引處的元素並將較小的元素附加到輸出數組。這一過程一直持續到其中一個陣列耗盡為止。然後附加另一個數組中的任何剩餘元素。

以下是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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn