C语言排序算法总结——希尔排序

这里写目录标题

前言

之前我们总结了比较简单的几种排序方法。冒泡,选择,排序。但是也提到了这些排序方法的缺陷。时间复杂度太高,在有大量数据需要排序的时候,会需要浪费太多的时间。所以在很多场景中是不适合使用。我们这次总结一种时间复杂度更优秀的希尔排序。

思路

希尔排序是以插入排序为基础的改进版本。是由Shell提出的方法。所以就叫希尔排序了。。
插入排序的基本思路是:将元素插入到一个有序的元素集合中。在使用插入排序时,我们是一个接一个的。
希尔排序的思想是:先确定一个flag,将待排序数组分为几个小组。分组方式是:将间隔为flag的数据设为一组。完成一轮插入排序后,缩小flag,再进行第二轮插入排序。直到flag缩小到一。
当我们有一个初始序列时: 9125748635
加入我们在开始时,假设gap为5,则序列分组像这样的
在这里插入图片描述
也就是每两个元素为一组。 这时候我们就像是使用插入排序,对五组只有两个元素的序列进行排序。于是排序好的序列为:
4 1 2 3 5 9 8 6 5 7
第一趟排序结束后,我们再对排序好的元素以gap=2来分组。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值