常见的排序算法(1)
插入排序
public static void insertSort(Comparable[] a) {
int N=a.length;
for(int i=0;i<N;i++) {
for(int j=i;j>0&&less(a[j],a[j-1]);j--)exch(a,j,j-1);
}
}
希尔排序
public static void shellSort(Comparable[] a) {
int N=a.length;
int h=1;
while(h<N/3)h=3*N+1;
while(h>=1) {
for(int i=h;i<N;i++) {
for(int j=i;j>=h&&less(a[j],a[j-h]);j-=h)exch(a,j,j-h);
}
h=h/3;
}
}
使用的两个方法
public static void exch(Comparable[] a,int i,int j) {
Comparable temp=a[j];
a[j]=a[i];
a[i]=temp;
}
public static boolean less(Comparable a,Comparable b){
return a.compareTo(b)<0;
}
在这里使用实现Comparable接口的类进行比较排序方便用于字符串,整型,浮点型数组排序,以及可以对其他的实现Comparable接口的类进行期望的排序,不过需要注意的是,实现Comparable接口后需要重写compareTo()方法。