public static void sort(Comparable[] a){
//设置增长量初始值
int h=1;
while(h<a.length/2){
h=2*h+1;
}
//开始排序
while(h>=1){
//找到每一个待插入元素
for(int i=h;i<a.length;i++){
//同组比较
for(int j=i;j>=h;j-=h){
if(greater(a[j-h],a[j])){
swap(a,j-h,j);
}else {
break;
}
}
}
h=h/2;
}
}
/**
* 判断两个元素大小
*/
public static boolean greater(Comparable v,Comparable w){
int result=v.compareTo(w);
return result>0;
}
/**
* 交换数组中两个元素的位置
*/
public static void swap(Comparable[] a,int i,int j){
Comparable temp;
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}