public class Sort {
public static void swap(Comparable[] a,int i,int j){
Comparable temp=a[i];
a[i]=a[j];
a[j]=temp;
}
public static boolean less(Comparable v,Comparable w){
return v.compareTo(w)<0;
}
public static void shellSort(Comparable[] a){
int N=a.length;
int h=1;
while(h<N/3) h=3*h+1;// 递增序列
while(h>=1){
// 将数组变为h有序
for(int i=h;i<N;i++){
// 将a[i]插入到 a[i-h],a[i-2*h]...之中
for(int j=i;j>=h && less(a[j],a[j-h]);j=j-h){
swap(a,j,j-h);
}
}
h=h/3;
}
}
public static void show(Comparable[] a){
for(int i=0; i<a.length; i++){
System.out.print(a[i]+" ");
}
System.out.println();
}
public static void main(String[] args) {
Integer[] a={3,6,2,7,9,0,8,1,4,5};
show(a);
shellSort(a);
show(a);
}
}
// output example
//3 6 2 7 9 0 8 1 4 5
//0 1 2 3 4 5 6 7 8 9
希尔排序
最新推荐文章于 2023-11-28 16:53:17 发布