Javaによる昇順/降順バブルソート

2009/05/12 10:43Update
TAGS: java | バブルソート | アルゴリズム | ソート | サンプル | 降順 | 昇順

Javaによる昇順/降順バブルソート実装サンプルです。

バブルソートについて
バブルソート - Wikipedia

バブルソートサンプルコード
TestBubbleSort.java
public class TestBubbleSort {
    /**
     * バブルソートサンプル
     * 1)ランダムで生成した整数型のデータを昇順でバブルソート
     * 2)降順でバブルソート
     * 
     */
    public static void main(String[] args) {
        int[] x = new int[20];

        //ソートしたい配列データをランダムで生成
        for (int i = 0; i < x.length; i++) {
            x[i] = (int) (Math.random() * 100);
        }

        //ソート前
        System.out.println("ソート前");
        printArray(x);
        
        //バブルソート(昇順)
        bubbleSort(x, true);
        
        //ソート後
        System.out.println("\r\n\r\n昇順ソート後");
        printArray(x);
        
        //バブルソート(降順)
        bubbleSort(x, false);
        
        //ソート後
        System.out.println("\r\n\r\n降順ソート後");
        printArray(x);
    }

    /*
     * バブルソート
     * @param x ソート対象となる配列
     * @param asc true:昇順, false:降順
     * @return ソート後の配列
     */
    private static int[] bubbleSort(int[] x, boolean asc) {
        for (int i = 0; i < x.length; i++) {// 0, 1, ... len
            for (int j = i + 1; j < x.length; j++) {// i+1, ... len
                if (asc && x[i] > x[j]) {    //昇順の場合
                    swapValue(x, i, j);
                } else if (!asc && x[i] < x[j]) {    //降順の場合
                    swapValue(x, i, j);
                }
            }
        }
        
        return x;
    }
    /*
     * 指定する配列のx[i],x[j]の値を置換する 
     * @param x 配列 
     * @param i 位置 
     * @param j 位置
     */
    private static void swapValue(int[] x, int i, int j) {
        int tmp = x[i]; // x[i]→tmp
        x[i] = x[j];     // x[j]→x[i]
        x[j] = tmp;     // tmp→x[j]
    }
    
    /*
     * 配列を表示する
     * @param x 配列
     */
    private static void printArray(int []x) {
        for (int i = 0; i < x.length; i++) {
            if (i%10 == 0) {
                System.out.print("\r\n");
            }
            System.out.print(x[i]);
            System.out.print(" ");
        }
    }
}


実行結果
javac TestBubbleSort.java
java TestBubbleSort

ソート前

8 91 63 80 45 15 2 80 22 40
1 31 11 77 18 82 94 35 82 53

昇順ソート後

1 2 8 11 15 18 22 31 35 40
45 53 63 77 80 80 82 82 91 94

降順ソート後

94 91 82 82 80 80 77 63 53 45
40 35 31 22 18 15 11 8 2 1

有关作者
Syboos.jp編集長AJavaやオープンソース情報の執筆、Webサイトの開発や運営全般の業務に携わる。

Sponsored Link


Comments

用户名 (required)

Email (will not be published) (required)

URL

Evaluation