希尔排序算法原理
希尔排序又称缩小增量排序。
- 基本思想:先将原表按增量ht分组,每个子文件按照直接插入法排序。同样,用下一个增量ht/2
将文件再分为子文件,再直接插入法排序。直到ht=1时整个文件拍好序。
- 关键:选择合适的增量
- 希尔排序算法:可以通过三重循环来实现
希尔排序图示




希尔排序特点
主要特点:
每一趟以不同的增量进行插入排序。当d较大时,被移动的记录是跳跃式进行的。到最后一趟排序时(d=1),
许多记录已经有序,不需要多少移动,所以提高了排序的速度。
希尔排序的时间复杂度分析与选择的增量有关系。它是不稳定的排序方法。
增量的合理选择
最普通的选择就是使用数组长度的一半
这种增量从效率来说,不是非常好
增量的选择
knuth序列
h = 1
h = 3*h+1
代码
1 | import java.util.Arrays; |