落日楼头,断鸿声里,江南游子。把吴钩看了,栏杆拍遍,无人会,登临意。
——水龙吟·登建康赏心亭
希尔算法是希尔(D.L.Shell)于1959年提出的一种排序算法。是第一个时间复杂度突破O(n²)的算法之一。
其基础是插入排序。
上代码:
public class ShellSort { public static void shellSort(int[] arr){ int increment = arr.length;
int temp;//牌
int i;
int j;
do {
increment = increment/ + ;//增量
for (i = increment; i < arr.length; i++) {
if (arr[i] < arr[i - increment]) {
temp = arr[i];
for (j = i - increment; j >= && temp < arr[j]; j -= increment) {
arr[j] =arr[j]^arr[j + increment];
arr[j + increment] =arr[j]^arr[j + increment];
arr[j] =arr[j]^arr[j + increment];
}
}
}
} while (increment > );
}
}
增量选取△k = 2^(t-k+1)-1 (0≤k≤t≤⌊log2(n+1)⌋)