Javaによる昇順/降順バブルソート
2009/05/12 10:43Update
Javaによる昇順/降順バブルソート実装サンプルです。
バブルソートについて
バブルソート - Wikipedia
バブルソートサンプルコード
TestBubbleSort.java
実行結果
バブルソート - Wikipedia
バブルソートサンプルコード
TestBubbleSort.javapublic 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
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
Sponsored Link
Comments
- Relative Articles
- Java開発及び実行環境の構築 | Linux篇 - (2008/08/31 20:34)
- Java開発及び実行環境の構築 | Windows篇 - (2008/08/31 21:18)
- 5分でJava Hello World! - (2008/08/31 22:13)
- Java言語の制御構文 - 条件分岐if/else/else if - (2008/10/01 21:30)
- Java言語の繰り返し制御構文 - for文 - (2008/10/03 18:22)
- Java言語の繰り返し制御構文 - do ... while文 - (2008/10/03 21:23)
- Java言語の繰り返し制御構文 - while文 - (2008/10/03 21:32)
- Java言語の基礎 - javacコマンドによるコンパイル - (2008/10/10 17:58)
- Java アクセス修飾子概要 - (2008/10/29 18:31)
- Javaアノテーション機能 概要 - (2009/02/12 13:06)