ホームページ > Java > &#&チュートリアル > ソートされた 2 つの配列を効率的にマージするにはどうすればよいでしょうか?

ソートされた 2 つの配列を効率的にマージするにはどうすればよいでしょうか?

Mary-Kate Olsen
リリース: 2024-11-30 12:27:11
オリジナル
1097 人が閲覧しました

How Can We Efficiently Merge Two Sorted Arrays?

ソートされた配列の効率的なマージ: 改良された方法

2 つのソートされた配列を 1 つのソートされた配列にマージするには、いくつかのプログラミング手法を使用できます。ただし、最も効率的で頻繁に推奨される手法の 1 つは次のとおりです。

このアルゴリズムは両方の配列を同時に反復処理し、現在の各インデックスの要素を比較し、小さい方の要素を出力配列に追加します。このプロセスは、アレイの 1 つが使い果たされるまで続きます。他の配列に残っている要素はすべて追加されます。

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 ループ構造が採用されています。

以上がソートされた 2 つの配列を効率的にマージするにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート