希尔排序算法
1、算法原理
2、java代码实现
package com.pers.lxb;
public class Shell {
public static Comparable[] sort(Comparable[] array){
int len = array.length;
int h=1;
while (h<len/2){
h=2*h+1;
}
while (h>=1){
for (int i = h; i <len; i++) {
for (int j = i; j >=h ;j=j-h) {
if(bigger(array[j-h],array[j])){
exchange(array,j,j-h);
}else{
break;
}
}
}
h=h/2;
}
return array;
}
public static boolean bigger(Comparable a,Comparable b){
return a.compareTo(b)>0;
}
public static void exchange(Comparable[] array,int i,int j){
Comparable temp=array[i];
array[i]=array[j];
array[j]=temp;
}
}