希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。
public class ShellSort {
/**
* @param args
*/
public static void main(String[] args) {
int[] data = new int[]{5,1,6,2,7,8,9,3,4};
int j;
//gap:增量,区别于直接插入排序
for (int gap = data.length/2; gap > 0; gap = gap/2) {
for (int i = gap; i < data.length; i++) {
int temp = data[i];
for (j = i; j >= gap && temp < data[j-gap]; j-=gap) {
data[j] = data[j-gap];
}
data[j] = temp;
}
}
for (int i = 0; i < data.length; i++) {
System.out.print(data[i] + " ");
}
}
}