ソート【泡立ちソート】

2086 ワード

バブルソートの考え方:
大きな記録が沈殿する.

/**
 * SimpleBubbleSort.java
 * 
 *  。
 * 
 * @author Administrator
 */

public class SimpleBubbleSort {

	public static void simpleBubbleSort(int[] a) {

		for (int i = a.length; i > 1; i--)

			for (int j = 0; j < i - 1; j++)

				if (a[j] > a[j + 1])

					Util.swap(a, j, j + 1);

	}

	public static void main(String[] args) throws Exception {

		if (args.length == 0) {
			System.out.println(" ");
			System.exit(-1);
		}

		int[] a = new int[args.length];

		for (int i = 0; i < args.length; i++)

			a[i] = Integer.parseInt(args[i]);

		simpleBubbleSort(a);

		//  。
		for (int i = 0; i < a.length; i++)
			System.out.println(a[i]);

	}

}

改善された泡ソート:

/**
 * EnhancedBubbleSort.java
 * 
 *  。
 * 
 * @author Administrator
 */

public class EnhancedBubbleSort {

	public static void enhancedBubbleSort(int[] a) {

		int i = a.length - 1;

		while (i > 0) { //  

			int lastExchangedIndex = 0;

			for (int j = 0; j < i; j++)

				if (a[j] > a[j + 1]) {

					Util.swap(a, j, j + 1);

					lastExchangedIndex = j;

				}

			i = lastExchangedIndex; //  
		}

	}

	public static void main(String[] args) throws Exception {

		if (args.length == 0) {
			System.out.println(" ");
			System.exit(-1);
		}

		int[] a = new int[args.length];

		for (int i = 0; i < args.length; i++)

			a[i] = Integer.parseInt(args[i]);

		enhancedBubbleSort(a);

		//  。
		for (int i = 0; i < a.length; i++)
			System.out.println(a[i]);

	}

}