欢迎光临散文网 会员登陆 & 注册

7.8希尔排序

2021-12-16 22:56 作者:取悦疾风  | 我要投稿

首先请各位舰长们停止你们的联想,好好学习嗷!

内容来自尚硅谷Java数据结构与java算法(Java数据结构与算法)_哔哩哔哩_bilibili

写在前面:本文内容大致和原视频内老师的笔记内容相同,会偶尔插入自己的注释和理解,尽量会完成作业

7.8希尔排序

7.8.1简单插入排序存在的问题

看看简单的插入排序可能存在的问题

数组 arr = {2,3,4,5,6,1} 这时需要插入的数 1(最小) 这样的过程是

1被保存

arr = {2,3,4,5,6,6}

arr = {2,3,4,5,5,6}

arr = {2,3,4,4,5,6}

arr = {2,3,3,4,5,6}

arr = {2,2,3,4,5,6}

arr = {1,2,3,4,5,6}

结论:当需要插入的数是较小的数时,后移的次数明显增多,对效率有影响

7.8.2希尔排序法介绍

希尔排序是希尔(Donald Shell)于1959年提出的一种排序算法。希尔排序也是一种插入排序,它是简单插入排序经过改进之后的一个更高效的版本,也称为缩小增量排序

7.8.3希尔排序法的基本思想

希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止

7.8.4希尔排序法的示意图

7.8.5希尔排序法的应用实例

{8,9,1,7,2,3,5,4,6,0} 请从小到大排序分别使用希尔排序的交换法移动法,分别进行速度的测试

交换法:在分组中,当发现了2数的位置应该交换(逆序),就交换

简单说:有逆序就换,不停的重复,重复,再重复,效率低下

 

移动法:不马上交换,先后移,直到找到temp该去的位置,一次性插入即可

简单说:发现逆序了,先看找找自己应该插在那个位置,找到并确认了,只要一次插入就完成了,效率拉满

 

代码实现

抓紧时间好好学习嗷,等你学有所成了,参与制作mhy的游戏,多是一件美事啊

7.8希尔排序的评论 (共 条)

分享到微博请遵守国家法律