希尔排序简介
希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因 D.L.Shell 于 1959 年提出而得名。
希尔排序基本思想把待排序的数列分为多个组,而后再对每个组进行插入排序,先让数列整体大致有序,然后多次调整分组方式,是数列更加有序,最后再舒勇一次插入排序,使整个数列将全部有序。
希尔排序的基本思想是:
把记录按步长 gap 分组,对每组记录采用直接插入排序方法进行排序。
随着步长逐渐减小,所分成的组包含的记录越来越多,当步长的值减小到 1 时,整个数据合成为一组,构成一组有序记录,则完成排序。
我们来通过演示图,更深入的理解一下这个过程。
实例:
待排序的序列为 25,5, 14 ,39,6,31,23,18,9,1,11 。 共计11个数,增量序列的取值依次为:5,2,1 。
然后先算增量 为5时 的排序 25 31 11
5 23
14 18
39 9
6 1
他们每一行是一个分组, 然后将他们进行插入排序,然后合并, 得到 增量为5 之后的到的序列为 : 11 5 14 9 1 25 23 18 39 6 31
之后就是将上面得到的序列 在进行增量为2 进行分组。 11 14 1 23 39 31
5 9 25 18 6
将上面两行进行 分别 直接插入排序,然后在进行合并。 后得到 1 5 11 6 14 9 23 18 31 25 39
然后在进行一次 增量为1 的序列分组,, 这次就可以直接 在上面的序列进行 直接插入排序。 最后得到 有序序列, 1 5 6 9 11 14 18 23 25 31 39 。