【排序算法】希尔排序

举报
wangweijun 发表于 2022/03/30 01:01:02 2022/03/30
【摘要】 本篇文章来聊一聊希尔排序。 基本思想 上篇文章我们学习了折半插入排序,该排序算法的原理是在顺序插入查找插入过程中使用折半查找法从而提高插入效率,为此,我们可以思考一下是否还有办法能够使插入的...

本篇文章来聊一聊希尔排序。

基本思想

上篇文章我们学习了折半插入排序,该排序算法的原理是在顺序插入查找插入过程中使用折半查找法从而提高插入效率,为此,我们可以思考一下是否还有办法能够使插入的效率更高呢?

基于此,希尔排序诞生了,希尔排序的基本思想为:

先将整个待排序序列分割成若干子序列,分别进行直接插入排序,待整个序列中的记录"基本有序"时,再对全体记录进行一次直接插入排序。

图解排序过程

现有如下的一个序列:
在这里插入图片描述
我们以5为间隔,将原序列分成若干个子序列:
在这里插入图片描述
此时81、35、41就组成了一个子序列,我们对该子序列进行插入排序,结果如下:
在这里插入图片描述
因为81数值比较大,若按顺序插入或者折半插入,需要经过多次的比较才能够到达指定的插入位置,而通过希尔排序,只进行了两次比较,就让35和81非常接近最终的插入位置,这样的效率无疑是很高的。

此时35、41、81已经有序,我们再以5为间隔,得到一个子序列

文章来源: blizzawang.blog.csdn.net,作者:·wangweijun,版权归原作者所有,如需转载,请联系作者。

原文链接:blizzawang.blog.csdn.net/article/details/105196989

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。