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

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

DDD
リリース: 2024-11-28 15:17:14
オリジナル
651 人が閲覧しました

How Can I Efficiently Merge Two Sorted Arrays?

2 つのソートされた配列を効率的にマージする方法

最近のインタビューで、2 つのソートされた配列を 1 つのソートされた配列にマージするように求められました。要素を比較して新しい配列に追加するソリューションを提供しました。このアプローチは正しいですが、パフォーマンスを向上させるために最適化することができます。

より効率的なソリューションは次のとおりです:

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;
}
ログイン後にコピー

最適化されたソリューションでは、単一のループを使用して両方の配列を反復処理し、マージします。それらを回答配列に追加します。三項演算子 (? :) を使用すると、追加の条件ステートメントを必要とせずに、より小さい要素を決定し、それを回答配列に追加できます。

さらに、k を使用して、その後、回答配列のインデックスをインクリメントします。各要素が追加され、コードが簡素化され、操作の数が削減されます。

元のソリューションと比較して、この最適化されたバージョンはより簡潔で、より少ない条件チェックで実行されます。効率が向上します。

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

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