【Java】ソートされていない2つの配列をマージしてソート済み配列を作成する方法
この記事では、ソートされていない2つの配列を1つにマージし、最終的に昇順にソートされた配列を作成するJavaプログラムを解説します。
処理の流れ
- ソートされていない2つの配列を用意する
- 両方の配列の要素数の合計と同じサイズの結果配列を作成する
- ループ処理で各配列の要素を結果配列へコピーする
Arrays.sort()メソッドで結果配列を昇順にソートする
まず、ソートされていない2つの配列を用意しましょう。
int[] arr1 = new int[] {50, 22, 15, 40, 65, 75};
int[] arr2 = new int[] {60, 45, 10, 20, 35, 56};
次に、マージ結果を格納するための新しい結果配列を作成します。サイズは、両方の配列の長さを足した count1 + count2 とします。
int count1 = arr1.length; int count2 = arr2.length; int[] resArr = new int[count1 + count2];
続いて、whileループを使って、両方の配列の要素を先頭から順番に結果配列 resArr へコピーしていきます。
// arr1 の要素を resArr にコピー
while (i < arr1.length){
resArr[k] = arr1[i];
i++;
k++;
}
// arr2 の要素を resArr にコピー
while (j < arr2.length){
resArr[k] = arr2[j];
j++;
k++;
}
マージが完了したら、java.util.Arrays クラスの sort() メソッドを呼び出すだけで、配列全体を昇順に並べ替えられます。
それでは、ここまでの内容をまとめた完全なプログラムを見てみましょう。
完全なプログラム
import java.util.Arrays;
public class Demo {
public static void main(String[] args) {
// ソートされていない2つの配列
int[] arr1 = new int[] {50, 22, 15, 40, 65, 75};
int[] arr2 = new int[] {60, 45, 10, 20, 35, 56};
System.out.println("1つ目の配列 = " + Arrays.toString(arr1));
System.out.println("2つ目の配列 = " + Arrays.toString(arr2));
int count1 = arr1.length;
int count2 = arr2.length;
// マージ結果を格納する配列
int[] resArr = new int[count1 + count2];
int i = 0, j = 0, k = 0;
// arr1 の要素を resArr にコピー
while (i < arr1.length) {
resArr[k] = arr1[i];
i++;
k++;
}
// arr2 の要素を resArr にコピー
while (j < arr2.length) {
resArr[k] = arr2[j];
j++;
k++;
}
// マージした配列を昇順にソート
Arrays.sort(resArr);
System.out.println("ソート済みマージ配列 = " + Arrays.toString(resArr));
}
}
実行結果
1つ目の配列 = [50, 22, 15, 40, 65, 75] 2つ目の配列 = [60, 45, 10, 20, 35, 56] ソート済みマージ配列 = [10, 15, 20, 22, 35, 40, 45, 50, 56, 60, 65, 75]
ポイント解説
- 配列のコピー: 2つのwhileループで、インデックス変数
kを共有しながら要素を順番に書き込むことで、2つの配列を1つに連結できます。 - ソート:
Arrays.sort(resArr)はプリミティブ型のint配列に対してクイックソート(双方向のクイックソート)を使用しており、高速に昇順ソートが可能です。 - 表示:
Arrays.toString()を使うと、配列の中身を[10, 15, 20]のような読みやすい形式で簡単に出力できます。
このように、まず単純にマージしてから Arrays.sort() でソートする方法は、コードがシンプルで理解しやすいため、実務でも広く使われる基本的なテクニックです。
-
Pythonで2つの未ソートリストをマージしてソート済みリストを作成する方法
このチュートリアルでは、2つのリストをマージし、その結果をソートされた順序で出力するPythonプログラムの作り方を解説します。数値のリストだけでなく、文字列のリストにも対応できる汎用的な方法なので、ぜひ最後までご覧ください。実現したいことまず、具体的な入力と出力の例を見てみましょう。例1:数値のリストの場合入力:list_1 = [1, 3, 2, 0, 3]list_2 = [20, 10, 23, 43, 56, -1]出力:[-1, 0, 1, 2, 3, 3, 10, 20, 23, 43, 56]例2:文字列のリストの場合入力:list_1 = [hafeez, aslan]lis
-
Pythonで2つの未ソートのリストをマージしてソート済みリストを作成する方法
ここでは、ユーザーが入力した2つのリストが与えられます。各リストの要素はソートされていない状態です。この記事の目的は、これら2つの未ソートのリストを1つにマージし、その後リスト全体を昇順に並べ替えることです。例入力: A[] = {100, 50, 150} B[] = {200, 30, 20} 出力: マージ後のリスト: {20, 30, 50, 100, 150, 200}アルゴリズムステップ1: まず、ユーザー入力による2つのリストを作成します。 ステップ2: 最終的なマージリストのサイズは「1つ目のリストのサイズ + 2つ目のリストのサイズ」になります。 ステップ3: s