すずろぐ

人生大逆転を目指す、鈴木俊吾の成長日記

Java 整数配列をバブルソートするプログラムを作成してみた

Java - バブルソート

こんにちは、すずしんです。

しばらく私はプログラミングをしていませんでしたので…。
久しぶりに、簡単なプログラムを書いてみました。

今回作成したプログラムというのは、「整数配列をバブルソートで整列する」というものです。
具体的には、ランダムな数字の整数配列を昇順に並び替えるプログラムとなっています。
ちなみに、使用したプログラミング言語はJavaです。

プログラムの難易度としては、かなり簡単な部類になると思いますが…。
久しぶりに書くのでリハビリにはちょうど良いかなと。

バブルソートとは?

バブルソートというのは、リスト(配列)に対して、隣り合う二つの要素の値を比較して条件に応じた交換を行う整列アルゴリズムです。
ここで、条件というのは要素の大小関係の事をいいます。
値の大きい順(降順)または小さい順(昇順)で並び替えます。
このソートを行うと、値の大きいまたは小さい要素が浮かびあがってくるように見えるので、バブル(泡)ソートと呼ばれます。

バブルソートの例

ここでは、以下のような配列の昇順でのバブルソートの例を挙げてみます。

1回目で最も小さい値の1が左端へ順に移動していきます。
続いて、2回目で次に小さい値の3が左へ移動していきます。
同様に3回目、4回目と同じ操作をしていくと、最終的に昇順に整列されます。

7,9,5,1,3 - スタート時
7,9,1,5,3
7,1,9,5,3
1,7,9,5,3 - 1回目終了時
1,7,9,3,5
1,7,3,9,5
1,3,7,9,5 - 2回目終了時
1,3,7,5,9
1,3,5,7,9 - 3回目終了時
1,3,5,7,9 - 4回目終了時

バブルソートのサンプルプログラム

整数配列のバブルソートを行うサンプルプログラムを書いてみました。
ここでは、10個の要素を持つ整数配列を昇順に並び替えています。

mainメソッドでは、まず乱数を扱うためにRandomクラスのインスタンスrを用意します。
そして、int型配列を生成した後、forループ中で乱数を代入していきます。
printArrayメソッドで整列前の配列の中身を表示してから、bubbleSortメソッドでソートし、再びprintArrayメソッドで整列後の配列の中身を表示しています。

package jp.suzushin7.sample;

import java.util.Random;

public class BubbleSort {
    public static void main(String[] args) {
        Random r = new Random();

        int[] n = new int[10];
        for(int i = 0; i < n.length; i++) {
            n[i] = r.nextInt(100);
        }

        printArray(n);
        bubbleSort(n);
        printArray(n);
    }

    private static void bubbleSort(int[] n) {
        int tmp;
        for(int i = 0; i < n.length - 1; i++) {
            for(int j = n.length - 1; i < j; j--) {
                if(n[j-1] > n[j]) {
                    tmp = n[j-1];
                    n[j-1] = n[j];
                    n[j] = tmp;
                }
            }
        }
    }

    private static void printArray(int[] n) {
        for(int i = 0; i < n.length; i++) {
            if(i == n.length - 1) {
                System.out.println(n[i]);
            } else {
                System.out.print(n[i]+",");
            }
        }
    }
}

バブルソートのサンプルプログラムの実行結果

上記サンプルプログラムの実行結果の例を載せておきます。

ソート前の配列は、ランダムな数字が並んでいます。
そして、ソートされた後の配列は綺麗に昇順になっています。

乱数を使っていますので、実行するたびに数字が変わりますが…。
全てのパターンで正しく昇順にソートされるのが分かります。

93,88,96,74,76,32,46,90,37,54
32,37,46,54,74,76,88,90,93,96

ひとこと

今回は、バブルソートのプログラムを作成してみましたが…。
実際やってみると、意外と簡単にプログラムが組めてしまうというのが分かりましたね。
パパっとできましたよっ!

実装の難易度はとても低いですので…。
プログラミングを学び始めた方にとって、バブルソートを実装してみるというのは非常に良い練習になるのではないでしょうか。