分享好友 最新动态首页 最新动态分类 切换频道
数据结构(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.传统冒泡排序中每一趟排序操作只能找到一个最大值或最小值,我们考虑利用在每趟排序中进行正向和反向两遍冒泡的方法一次可以得到两个最终值(最大者和最小者) , 从而使排序趟数几乎减少了一半。可以参考折半查找法

改进后的算法实现为:

最新文章
餐饮业厨房油烟在线监测 OSEN-100油烟浓度检测仪
  奥斯恩OSEN-100油烟在线监测系统是根据饮食业油烟污染特性,并结合饮食业油烟污染治理、运营维护管理经验,全新研制的一套饮食业油烟污染监控管理系统。  由前端传感器、工况监测模块、主机采集系统、数据传输模块、数据接收服务器等
百度统计正式上线白名单过滤功能
最近,百度针对近期发生的很多网站百度统计代码被盗取网站出现的不明来源的问题不出意外的对外做出了表态,表示将强烈打击这帮人,并且还正式上线白名单过滤功能,防止网站在出现不明来源统计的问题。其实,上次磊哥在跟各位写“网站百度统
做好电子商务的五大要点
做好电子商务的五大要点  随着电子商务的蓬勃发展,传统经营模式已经行不通,传统企业不得不面对转型,那么,如何才能做好电子商务呢?下面小编就给大家带来一些经验吧!  一、产品  无论线上的做生意还是线下的做生意,产品都是至关重
速卖通运营笔记——站外推广拔升揭秘
速卖通平台的流量来源有很多,除站内平台所提供给卖家的流量外,还有很多站外渠道,可以引流到卖家的产品中。通过站外推广引流的方式去给店铺引流,是成本较低的一种引流方式。卖家可以根据自己的实际情况去选择站外推广方式,去获取站外流
人工智能智能聊天平台开发
人工智能智能聊天平台简介人工智能是一款基于人工智能技术的智能聊天平台。该平台可用于在线客服、智能语音助手、医疗问诊、个性化推荐等多个场景,为用户提供更为智能和便捷的服务。人工智能包含三大核心技术:GPT-3人工智能技术、自然语
短链接生成网-如何快速生成短链接
短链接是现代互联网时代中广泛使用的一种链接形式,相比于长链接,短链接方便分享、防止链接失效,并可以使网址更美观。那么如何快速生成短链接呢?首先,我们可以选择使用短链接生成网来生成想要的短链接。目前市面上有很多短链接生成网站
泡澡发朋友圈的说说
泡澡发朋友圈的说说80句  随着社交网络的普及,越来越多人习惯于在朋友圈发布说说,用于分享快乐,宣泄伤感。那么问题来了,到底什么样的说说才是低调奢华有内涵的呢?下面是小编为大家收集的泡澡发朋友圈的说说,欢迎大家借鉴与参考,希
突破网界-闯荡互联网的独门秘技:一窥究竟
互联网这潭水,深着呢!今日,小哥哥小姐姐们,咱不聊风花雪月,不谈诗和远方,就侃侃怎么在这片茫茫网海中,游刃有余,来去自如。嘿嘿,别瞪大了眼,咱们这就揭秘“看网站不受限制的浏览器”的奥秘,走起!都知道,这网络世界,是个花花世
戳这里!关于账号注册登录时的常见问答
问:在系统网站,法人账号注册时提示“该法人(统一社会信用代码)已注册”答:在互联网道路运输便民政务服务系统网站,出现该提示表示企业已经注册了网页端的法人账号,请直接使用已注册的用户名和密码登录,如果忘记了用户名或密码,处理
相关文章
推荐文章
发表评论
0评