希尔排序(Shell Sort)是D.L.Shell在1959年提出的,又称为缩小增量排序(Diminishing Increment Sort),基本思想是分组的直接插入排序。
图解
实现
public static void xierSort(int[] arry){
for (int delta = arry.length/2; delta > 0; delta/=2) {
for (int i = delta; i < arry.length; i++) {
int temp = arry[i],j;
for (j = i - delta; j>=0 && temp <arry[j]; j-=delta) {
arry[j+delta] = arry[j];
}
arry[j + delta] = temp;
}
}
}
复杂度分析
希尔排序算法的时间复杂度分析比较复杂,实际所需的时间取决于具体的增量序列。希尔排序算法的空间复杂度为O(1)。
希尔排序算法不稳定