「アルゴリズム(第4版)」並べ替え-----テンプレート


この本は並べ替えアルゴリズムに対してテンプレートを持っています.以下のいくつかの方法を含みます.
(1)sort():この方法で実現されるのは順序付けのアルゴリズムです.
(2)less():この方法はComprableインターフェースの中のcompreTo方法を利用しています.ここでcompreTo方法は、本オブジェクトと着信した比較対象に対して、以下であり、大なり、それぞれ負、0、正数を返します.
                             この方法は、compreToメソッドの結果が負であればtrueに戻ります.そうでなければfalseに戻ります.
(3)exch():この方法はexchangeで、交換して、使う伝統的な方法で、先にtempを探して、それから三者で交換します.
(4)show():配列内の要素を印刷する
(5)main():
テンプレートの詳細は以下の通りです
public class Selection {
	public static <T> void sort(Comparable<T>[] a){
	//           
	}
	private static <T>boolean less(Comparable<T> v, Comparable<T> w){
		return v.compareTo((T) w) < 0;
	}
	private static <T> void exch(Comparable<T>[] a, int i, int j){
		Comparable<T> t = a[i];
		a[i] = a[j];
		a[j] = t;
	}
	private static <T> void show(Comparable<T>[] a){
		//        
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i] + "");
			System.out.println();
		}
	}
	public static <T> boolean isSorted(Comparable<T>[] a){
		//          
		for (int i = 0; i < a.length; i++) {
			if(less(a[i], a[i-1]))
				return false;
		}
		return true;
	}
	public static void main(String[] args) throws FileNotFoundException {
		// TODO Auto-generated method stub
//		String[] a = {"S","O","R","T","E","X","A","M","P","L","E"};
		sort(a);
		assert isSorted(a);
		show(a);
		
	}
}
を観察して、
並べ替えアルゴリズムのテンプレートから入ってきたパラメータは、Comprableインターフェースを実現したデータタイプでなければなりません.これにより、直接にそれぞれのデータ比較習慣に従って並べ替えられます.
v.com mpareTo(w)<0のようなコードは、vとwが比較できない、または両方の一つにnullがあると、v.com mpareTo(w)が例外を投げます.