Javaでバブルソートをマスター:わかりやすい例とステップバイステップ解説
バブルソートとは
バブルソートは、リストを繰り返し走査し、隣接する要素を比較して順序が間違っていれば交換する、古典的な比較ベースのアルゴリズムです。各パスで次の最大値が最終位置に「泡のように」浮かび上がることからこの名がつきました。シンプルですが、ソートの仕組みを理解するための確かな基礎となります。
Java実装
以下のプログラムは、整数配列に対するバブルソートを示します。アルゴリズムの動作が見えるよう、詳細なデバッグ情報を出力します。
package com.guru99;
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {860, 8, 200, 9};
System.out.println("--- ソート前の配列 ---");
printArray(arr);
bubbleSort(arr); // バブルソートでソート
System.out.println("--- ソート後の配列 ---");
printArray(arr);
}
static void bubbleSort(int[] array) {
int n = array.length;
for (int i = 0; i < n; i++) {
System.out.println("ソートパス " + (i + 1));
for (int j = 1; j < (n - i); j++) {
System.out.println("比較: " + array[j - 1] + " と " + array[j]);
if (array[j - 1] > array[j]) {
// 要素を交換
int temp = array[j - 1];
array[j - 1] = array[j];
array[j] = temp;
System.out.println(array[j] + " は " + array[j - 1] + " より大きい");
System.out.println("要素を交換: 交換後の配列");
printArray(array);
}
}
}
}
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 860 200 9 比較: 860 と 200 860 は 200 より大きい 要素を交換: 交換後の配列 8 200 860 9 比較: 860 と 9 860 は 9 より大きい 要素を交換: 交換後の配列 8 200 9 860 ソートパス 2 比較: 8 と 200 比較: 200 と 9 200 は 9 より大きい 要素を交換: 交換後の配列 8 9 200 860 ソートパス 3 比較: 8 と 9 ソートパス 4 --- ソート後の配列 --- 8 9 200 860
Java
- Java Hello World:最初のプログラム
- Java多次元配列をマスター:2D・3D配列の実例解説
- Java配列コピー技法:包括的ガイド
- Javaオブジェクト配列の作成:ステップバイステップガイド
- Java String.charAt()完全解説:構文、戻り値、例外、実例
- Java String.endsWith()マスター:文字列サフィックスチェック実例付き
- Java コンストラクタオーバーロード完全解説:実践コード例付き
- Javaで素数判定を行うプログラム
- Javaでバブルソートをマスター:わかりやすい例とステップバイステップ解説
- Javaで挿入ソート:わかりやすい例とステップバイステップガイド
- Javaで選択ソート:ステップバイステップ例と完全コード