Javaで選択ソート:ステップバイステップ例と完全コード
選択ソートとは
選択ソートは、未ソート部分から最小要素を繰り返し選んで所定の位置に交換する、シンプルな比較ベースのアルゴリズムです。大規模データには向きませんが、その簡潔さから教育目的や小さな配列に最適です。
アルゴリズムの仕組み
- 配列の先頭から開始
- 未ソート部分から最小要素を見つける
- それを現在位置の要素と交換
- ソート済みと未ソートの境界を1つ右に移動
- 配列全体がソートされるまで繰り返す
Java実装
以下は、整数配列に対する選択ソートアルゴリズムを示す簡潔なJavaプログラムです。ソート前後の配列と、各パスの中間ステップを出力します。
package com.guru99;
public class SelectionSortAlgo {
public static void main(String[] args) {
int[] myArray = {860, 8, 200, 9};
System.out.println("------選択ソート前------");
printArray(myArray);
selection(myArray); // 配列をソート
System.out.println("-----選択ソート後-----");
printArray(myArray);
}
public static void selection(int[] array) {
for (int i = 0; i < array.length - 1; i++) {
System.out.println("ソートパス番号 " + (i + 1));
int index = i;
for (int j = i + 1; j < array.length; j++) {
System.out.println("比較: " + array[index] + " と " + array[j]);
if (array[j] < array[index]) {
System.out.println(array[index] + " は " + array[j] + " より大きい");
index = j;
}
}
int smallerNumber = array[index];
array[index] = array[i];
array[i] = smallerNumber;
System.out.println("要素を交換: 交換後の配列");
printArray(array);
}
}
private static void printArray(int[] array) {
for (int i = 0; i < array.length; i++) {
System.out.print(array[i] + " ");
}
System.out.println();
}
}
実行結果の例
------選択ソート前------ 860 8 200 9 ソートパス番号 1 比較: 860 と 8 860 は 8 より大きい 比較: 8 と 200 比較: 8 と 9 要素を交換: 交換後の配列 8 860 200 9 ソートパス番号 2 比較: 860 と 200 860 は 200 より大きい 比較: 200 と 9 200 は 9 より大きい 要素を交換: 交換後の配列 8 9 200 860 ソートパス番号 3 比較: 200 と 860 要素を交換: 交換後の配列 8 9 200 860 -----選択ソート後----- 8 9 200 860
パフォーマンスメモ
選択ソートは入力に関わらずO(n²)回の比較を行い、追加メモリは最大O(1)しか使用しません。その決定論的な振る舞いは、メモリが制約される環境に適しています。
Java
- Java配列をマスター:宣言、初期化、操作
- Java Hello World:最初のJavaプログラム作成ステップバイステップガイド
- Javaカプセル化完全ガイド:実践例で理解するデータ隠蔽とアクセサ
- Java変数とデータ型完全ガイド:実例付きで徹底解説
- Java String.length()メソッド:文字列サイズ取得の実例解説
- Java String.charAt()完全解説:構文、戻り値、例外、実例
- Java String.contains()メソッド:部分文字列チェックの実践例
- Java String.endsWith()マスター:文字列サフィックスチェック実例付き
- Java BufferedReader でファイル読み込み:実践ガイドと例
- Javaでバブルソートをマスター:わかりやすい例とステップバイステップ解説
- Javaで挿入ソート:わかりやすい例とステップバイステップガイド