排序算法类模板中约定了一些方法:
public class Example {
public static void sort(Comparable[] a){
//排序
}
private static boolean less(Comparable<Comparable> v,Comparable w){
//比较
return v.compareTo(w)<0;
}
private static void exch(Comparable[] a, int i,int j){
//交换
Comparable t = a[i];a[i] = a[j];a[j] = t;
}
private static void show(Comparable[] a){
//打印
for(int i = 0; i<a.length;i++)
System.out.print(a[i]+" ");
System.out.println();
}
public static boolean isSorted(Comparable[] a){
//测试是否有序
for(int i=1;i<a.length;i++)
if(less(a[i],a[i-1])) return false;
return true;
}
public static void main(String[] args){
//测试排序方法以及性能
}
}
此排序算法类模板适用于任何实现了Comparable接口的数据类型。Java中封装的数字类型和String类型以及许多高级数据类型(如File和URL)都实现了此接口。
在创建自己的类时,只要实现Comparable接口就可以用示例代码将其排序。要做到这一点只需在自己的类中实现compareTo()方法定义目标类型对象的自然排序。compareTo()实现了主键抽象----它给出了实现了Comparable接口的任意数据类型的对象的大小顺序的定义。
Comparable接口位于java.lang包中,要实现此接口只需要实现comareTo()方法即可。