分享好友 最新动态首页 最新动态分类 切换频道
数据结构(1)—— 排序算法汇总
2024-12-28 22:17

最近很多同学问我关于排序算法的问题,像冒泡排序,选择排序。学过数据结构的还好说,对于没有接触过数据结构的同学来说内心基本是属于崩溃的。下面我就来总结一下数据结构中的八大排序算法。

数据结构(1)—— 排序算法汇总

排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。


排序(按关键字大小顺序排列数据
排序方法:内部排序,外部排序;简单的排序方法O(n2),先进的排序方法O(nlogn),基数排序O(dn);插入排序,交换排序,选择排序,归并排序,计数排序。
排序方法的稳定性:取决于该方法采取的策略,不是由一次具体的排序结果决定的。但是通过列举不稳定的排序实例可以说明该排序算法的不稳定性。
1、直接插入排序
直接插入排序是由两层嵌套循环组成的。外层循环标识并决定待比较的数值。内层循环为待比较数值确定其最终位置。直接插入排序是将待比较的数值与它的前一个数值进行比较,所以外层循环是从第二个数值开始的。当前一数值比待比较数值大的情况下继续循环比较,直到找到比待比较数值小的并将待比较数值置入其后一位置,结束该次循环。
将待排序记录插入已排好的记录中,不断扩大有序序列。一句话,“将待排序记录插入有序序列,重复n-1次” 。

:排序前: 6 3 3 5 6 3 1 0 6 4
i = 0: 6
i = 1: 3 6
i = 2: 3 3 6
i = 3: 3 3 5 6
i = 4: 3 3 5 6 6
i = 5: 3 3 3 5 6 6
i = 6: 1 3 3 3 5 6 6
i = 7: 0 1 3 3 3 5 6 6
i = 8: 0 1 3 3 3 5 6 6 6
i = 9: 0 1 3 3 3 4 5 6 6 6
排序后: 0 1 3 3 3 4 5 6 6 6

插入排序演示地址

算法实现


2、希尔排序
希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法,先将待排序列分割成若干个子序列,分别进行直接插入排序,基本有序后再对整个序列进行直接插入排序。
步骤
1. 分成子序列(按照增量dk)
2. 对子序列排序(直接插入排序)
3. 缩小增量,重复以上步骤,直到增量dk=1。
增量序列中最后一个增量一定是1,如:… 9, 5, 3, 2, 1和… 13, 4, 1。如没有明确说明增量序列可以选择… 3, 2, 1或… 5, 3, 2, 1。

算法说明

3、选择排序
设所排序序列的记录个数为n。i取1,2,…,n-1,从所有n-i+1个记录(Ri,Ri+1,…,Rn)中找出排序码最小的记录,与第i个记录交换。执行n-1趟 后就完成了记录序列的排序。
第i趟排序过程是在剩余的待排记录中选一个最小(大)的,放在第i个位置。
一句话,“在待排记录中选取最小的,交换到合适位置,重复n-1次” 。

算法实现

算法实现

对冒泡排序常见的改进方法是加入一标志性变量,用于标志某一趟排序过程中是否有数据交换,如果进行某一趟排序时并没有进行数据交换,则说明数据已经按要求排列好,可立即结束排序,避免不必要的比较过程。本文再提供以下两种改进算法

1.设置一标志性变量pos,用于记录每趟排序中最后一次进行交换的位置。由于pos位置之后的记录均已交换到位,故在进行下一趟排序时只要扫描到pos位置即可。

改进后算法如下:

2.传统冒泡排序中每一趟排序操作只能找到一个最大值或最小值,我们考虑利用在每趟排序中进行正向和反向两遍冒泡的方法一次可以得到两个最终值(最大者和最小者) , 从而使排序趟数几乎减少了一半。可以参考折半查找法

改进后的算法实现为:

最新文章
短链在线转换工具,免费短链接生成器
【爱短链】免费社群营销短链接生成器,是为社群营销人员量身定制的高效推广工具,不仅可以缩短美化推广链接,提高点击率的同时,还不易引起反感,不容易被删除,也能够在QQ、微信等生态中完美兼容,短链接生成器完全免费,大家可以点击上方
简书发帖秒收录软件【进来发文合作-排名好-来】,百度和今日头条发帖子赚钱的三种方式,你知道吗?
下一篇文章内容预览:百度发帖怎么赚钱?今日头条发帖怎么赚钱?其实网上发帖赚钱的方法无非就是三种:第一种是很多公司为了宣传自己,就把一些软文广告给广告商,广告商就会招募很多人在各个平台发帖,一般来说每篇帖子都能赚几块钱;第二
网易云基础服务(蜂巢)云主机正式上线
近日,网易云基础服务(网易蜂巢)发布最新“云主机”产品,广泛支持各类 Linux发行版及Windows操作系统。此外,云主机将与网易云现有的容器服务内网互通,不但保证了租户间的隔离,而且在数据安全的前提下,极大地提升了用户使用混合计算资
冬奥最新换牌榜排名图片,展现各国荣耀时刻,冬奥最新换牌榜排名揭晓,展现各国荣耀瞬间
摘要:根据最新发布的冬奥换牌榜排名图片,各国运动员的荣耀时刻得以展现。这张图片集中呈现了各国在冬奥赛事中的精彩表现和优异成绩,吸引了众多关注。各国运动员通过不懈的努力和拼搏,在赛场上展现出卓越的实力和风采,为世界带来了一场
WordPress 插件专栏:最新推荐十个实用小插件
WordPress 插件可以大大提升你网站的功能和用户体验,使之更完整,也能增加更多的网站流量和访问量。下面是最近我们推荐的十个非常有用的小插件:Yoast SEO 是一个被用来提高网站搜索引擎排名的插件,它可以帮助你优化你的文章,使其具有更
淘宝有哪些违规关键词?如何检测?
现如今在淘宝开店的商家是越来越多了,为了规范商家的经营行为,淘宝官方特意推出了淘宝规则。而在淘宝开店,设置关键词也是非常重要的,那么淘宝具体有哪些违规的关键词?应该如何检测?一、淘宝有哪些违规关键词?淘宝希望每一个流量都得到
半导体,大爆发!
当地时间12月13日周五,美股三大股指涨跌不一。截至收盘,道指跌0.20%,纳指涨0.12%,标普500指数平收。消息面上,接受彭博调查的经济学家预计,本月美联储将连续第三次降息,并下调明年降息次数预期。市场预计美联储主席鲍威尔及其同僚下
很落地的chatgpt应用场景——批量制作抖音爆款带货文案并直接SEO霸屏1 小时前
         本文用到的工具清单: 1.抖音热点宝(手机端) 2.total control 方便电脑控制手机(苹果用虫洞) 3.轻抖(网页版) 新用户送30分钟,视频文案提取 4.uibot chatgpt超级写手
百度世界大会 刘斌在大数据与人工智能论坛演讲
百度世界大会 刘斌在大数据与人工智能论坛演讲 9月8日,2015百度世界大会在北京举行。百度技术体系经理刘斌在《大数据与人工智能论坛》展示了百度旗下的第三方数据分发平台APIStore。刘斌表示,在大数据时代,数据的流通或许会是互联网的
谷歌搜索广告如何根据国家市场定点投放
今天跟大家聊聊如何针对谷歌搜索广告有针对性的投放目标国家。对于一些在某些行业内浸淫多年的老业务来说,目标市场在哪些国家非常清晰了,可能投放的时候往往受到这种固守思维的限制,主观的认为这些国家就是应该投放的
相关文章
推荐文章
发表评论
0评