package offer;
/**
* 希尔排序:
* 插入排序的升级版本
* “缩小增量排序”
*/
public class ShellSort {
private static void shellSort(int[] a){
int j;
int tmp;
for (int gap = a.length / 2; gap > 0 ; gap /= 2){
for (int i = gap ; i < a.length ; i++){
tmp = a[i];
//每次和前面的间隔gap大小的位置比较
for (j = i ; j >= gap && tmp < a[j - gap] ; j -= gap){
a[j] = a[j - gap];
}
a[j] = tmp;
}
}
}
public static void printArray(int[] a){
for (int i : a){
System.out.print(i + " ");
}
}
public static void main(String[] args){
int[] a = {1,4,3,5,2,6,9,8,7};
shellSort(a);
printArray(a);
}
}