原理
/**
* 希尔排序
*/
public class HillSort {
private static int[] array;
HillSort(int[] array){
this.array = array;
}
public void run(){
int j;
//第一层循环获取步长
for(int gap = array.length/2; gap>0; gap/=2){
for (int i = gap; i < array.length; i++) {
int tmp = array[i];
for (j = i; j >= gap && tmp < array[j - gap]; j -= gap) {
array[j] = array[j - gap];
}
array[j] = tmp;
}
}
}
}