分享好友 最新资讯首页 最新资讯分类 切换频道
数据结构——直接插入排序与希尔排序(图示+文字详解)
2024-12-29 19:04

内容包括:排序的代码实现,排序原理详解,代码详解,图示

 

效果图例

基本原理:向一个有序区间插入一个值(此值在有序区间末尾的后一个位置

生动些:可以将这种插入排序看作摸牌的过程,我们手上的牌都是已经按照一定顺序排列好的,现在我们又新拿了一张牌,准备插入,方法就是从手上排好的最后一张牌开始,依次比较

若是当前手上的牌大于待插入的新牌,那么需要将手上的此牌向后移动一步,腾出一个位置

若是当前手上的牌小于待插入的新牌,则新牌的位置则定下,即手上的此牌的后一个位置

 

1 for循环构造出所有有序区间末尾下标的可能

2 待插入元素需要临时保存在tmp变量中,因为在插入过程中伴随着有序区间元素的后移,若是不提前保存待插入元素的值,则可能导致待插入元素被覆盖

3 若是待插入元素比有序区间的元素小,则此有序区间的元素即其后面都需要后移一位,但是比较还在继续,直至待插入元素比有序区间的元素大,才会停止比较

4 停止比较的两种可能(待插入元素确定位置的两种情况

                            1 待插入元素在有序区间内找到一个比小的元素,则它需要插在此元素的后面,即end+1的位置

                            2 待插入元素比所有有序区间内的元素都要小,此时end=-1,比无可比,则所有有序区间内的元素都后移一位,它插在数组的第一个位置上,即end+1的位置

故而在代码中我设计:若是遇到比待插入元素小的元素直接break,这样可以统一。

希尔排序是直接插入排序基础之上的代码设计

 
 

基本原理:第一步:多次预排序使得序列逼近有序(gap>1)

                  第二步:直接插入排序,使得序列最终有序(gap==1)

间隔gap分为一组,共又gap组

gap=gap/3+1 或者gap=gap/2   无论哪种都会使得gap最终=1,就是所有元素构成一组,此时对一组的排序就是前面所介绍的直接插入排序,会让数组最终有序

 

下面省略每组的每个待排序元素插入自己所在组有序区间的结果,读者可自行操作,这里介绍方法 

 

 end处在红组:对红组的一个待排序元素进行插入排序,初始有序区间内只有一个9

end++,end处在绿组,对绿组的一个待排序元素进行插入排序,初始有序区间内只有一个8

end++,end处在蓝组, 对蓝组的一个待排序元素进行插入排序,初始有序区间内只有一个7

end++,end处在橙组, 对橙组的一个待排序元素进行插入排序,初始有序区间内只有一个6

之后的end继续++,先是将红组中的下一个待插入元素进行插入排序,再是对绿组的下一个待插入元素进行插入排序,然后是对蓝组的下一个待插入元素进行插入排序,再是对橙组的下一个待插入元素进行插入排序,绿,蓝,橙……如此循环多组并排

最新文章
2024双11淘宝抖音京东哪个的成交额增长更高?哪种品类卖得更好?
今年,史上周期最长的双11在开启前就引发了商家们的广泛讨论:走到第16个年头的双11,还能否保持强劲的销售势头?随着10月的结束
2021贵州高校排名,贵州大学“鹤立鸡群”,贵州财经“稍有落后”
贵州地处我国西南腹地,是西南地区重要的交通枢纽,拥有着丰厚的旅游资源,素有“避暑胜地”之称,气候适宜,每年都有很多人去贵
8道女性最关心的私密问题,帮你一键排查健康盲区!
头图: 方冰 | 图片+版式: 番薯丫策划+文案: 阿静 |责编:豌豆原创文章,未经许可,请勿转载不知不觉「第十一诊室」的科普之路已
27【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏范例 - 监控指挥中心
大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码大数据可视化大屏前端源码
Collaborate on Word documents with real-time co-authoring
 If you're using an older version of Word, or if you're not a ​​​​​​ Microsoft 365​​​​​​​ subscriber, you
AI脚本编写全攻略:从基础概念到实战应用,深度解析人工智能编程要点
人工智能()作为现代科技的宠儿正在深刻地改变着咱们的生活和工作形式。脚本编写作为应用的核心环节不仅须要开发者掌握基础的编
excel分段排序_10个能让你告别加班的Excel神技!
办公效率太低?同样的工作为什么同事总会比你快一步完成?那是因为你对Excel还不够了解,今天给大家分享十个
A股市场校友圈实力排行榜!顶流名校谁最强?
  截至9月16日,A股市场已有4900余家上市公司,其中,4895家披露了公司董事长履历。从履历中可以看出,不少上市公司董事长毕业
2023高考前如何快速提高成绩 有哪些技巧
高三大多数学生对自己没有一个准确的定位,都是只知道埋头苦学,学习成绩也是不升不降,比较稳定。如果想要大幅度的提高高考成绩
AI: 生成式人工智能在软件开发中的作用与影响
在过去的几年里,生成式人工智能(Generative AI)以惊人的速度发展,逐渐渗透到各行各业,软件开发领域也不例外。无论是代码生