希尔排序的特性
利用插入排序的简单,同时克服插入排序每次只交换相邻两个元素的缺点
栗子:对下面序列排序
81 94 11 96 12 35 17 95 28 58 41 75 15
5间隔: 每隔5个,对其子序列做插入排序
81 94 11 96 12 35 17 95 28 58 41 75 15
35 94 11 96 12 41 17 95 28 58 81 75 15
5间隔排序后:
35 17 11 28 12 41 75 15 96 58 81 94 95
3间隔: 28 12 11 35 15 41 58 17 94 75 81 96 95
1间隔: 11 12 15 17 28 35 41 58 75 81 94 95 96
3 间隔有序序列还保持了 5间隔有序的性质(更小间隔没有把上一个间隔变坏)
定义增量序列DM >DM-1 >...>D1 =1
对每个 Dk进行“Dk-间隔”排序( k = M, M-1, ... 1 )
注意:“Dk-间隔”有序的序列,在执行“Dk-1-间隔”排序后,仍然是“Dk- 间隔”有序的
原始希尔排序
每次减半
DM = [ N / 2 ] Dk = [ Dk+1 / 2 ]
时间复杂度
最坏情况 T = φ(N²)
希尔排序的坏的栗子:
1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 16
8间隔:1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 16
4间隔:1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 16
2间隔:1 9 2 10 3 11 4 12 5 13 6 14 7 15 8 16
1间隔:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
以上例子说明:
增量元素不互质,则小增量可能根本不起作用
互质:元素没有公因子
- 8,10的最大公因数是2,不是1,因此不是整数互质。
- 7,11,13的最大公因数是1,因此这是整数互质。
- 5和5不互质,因为5和5的公因数有1、5
更多的增量序列
hibbard 增量序列
sedgewick增量序列