希爾排序(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)。
希爾排序算法不穩定