首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

常见排序算法5——希尔排序

希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D.L.Shell于1959年提出而得名。

算法描述

1)取增量gap,一般为gap=len/2;此增量未必是最优解,也可以是其它小于len的增量,关于希尔排序取最优增量分析比较复杂,大家可自行研究

2)将待排序元素按增量间隔分组

3)对每组元素进行直接插入排序

4)增量gap减半为新的gap

5)重复2-4,直至增量gap为1

算法描述

PHP代码

算法复杂度

时间复杂度:根据增量序列短的不同,其时间复杂度范围为O(n^(1.3-2))

空间复杂度:O(1)

算法稳定性

由于多次插入排序,我们知道一次插入排序是稳定的,不会改变相同元素的相对顺序,但在不同的插入排序过程中,相同的元素可能在各自的插入排序中移动,最后其稳定性就会被打乱,所以shell排序是不稳定的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191026A0LBG000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券