希尔排序简介

希尔排序(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  。

 

 

  

 

 

 

posted on 2021-05-15 20:30  Tzk-  阅读(79)  评论(0)    收藏  举报