核心思想
爲解決插入排序的最壞情況問題,希爾排序通過一個增量序列先保證區間有序將最壞情況優化掉
注意增量序列必須保證第n個和第n+1互質
算法實現
- Java版
public static int[] sort(int[] data) {
int length = data.length;
int h = 1;
while (h < length / 3) {
h = 3 * h + 1;
}
while (h >= 1) {
for (int i = h; i < length; i += h) {
int right = data[i];
int left = i - h;
while (left >= 0 && data[left] > right) {
data[left + h] = data[left];
left -= h;
}
data[left + h] = right;
}
h /= 3;
}
return data;
}