排序算法—希尔排序

希尔排序简介

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

 

 

  

 

 

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tzk_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值