希尔排序

希尔排序是插入排序的优化版本,通过设定不同的间隔gap将数列分组,对每个组进行插入排序,逐步减小gap直到为1,从而提高排序效率。文章详细介绍了希尔排序的步骤,包括分组、排序过程,并提供了代码实现。
摘要由CSDN通过智能技术生成

希尔排序

前言

说到希尔排序,就不得不说到插入排序,插入排序有一个缺点,那就是对于有序性高的序数列,排序效果好,也就是速度快,但对于无序性高的数列来说,插入排序的速度就会很慢。为什么呢?因为,每次从无序数列中向有序数列插入时,都要依次从后往前和有序数列中的每一个数比较这样的话,效率就比较低。这也就解释了为什么,对于有序性高的竖列,排序速度就会快一些。但实际情况中,不是说你想怎么样就怎么样的,于是就有了希尔排序,可以把它看做插入排序的优化升级版。

排序步骤

  1. 将一个数列分为以gap为步长的若干段,gap是数列长度的一半,这时每一段都含有gap个数字
  2. 再将每一段的第一个数字拿出来进行插入排序,排好序后再从小到大依次放回每段第一个,再把每一段的第二个数拿出来排序,再放回去,一直到每一段的第gap个,排好序后放回去。
  3. 然后步长除以2,得到新的gap,重复上面的步骤
  4. 直到gap为1停止,通过一顿操作,使得数列的的有序性提高
  5. 最后再对数列进行插入排序
  6. 希尔排序其实就是白数列变得更适合插入排序后,再进行插入排序

希尔排序

补充说明

  • 我找的这个图比较巧合,刚好到最后一趟就排好序了,但一般情况下,还要再

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值