


下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Word 排序算法的算法思想和使用场景总结 排序算法的算法思想和使用场景总结 1. 概述 排序算法是计算机技术中最基本的算法,很多简单算法都会用到排序。尽管各种排序算法都已被封装成库函数供程序员使用,但了解排序算法的思想和原理,对于编写高质量的软件,显得特别重要。 本文介绍了常见的排序算法,从算法思想,简单度和使用场景等方面做了总结。 2. 几个概念 (1)排序稳定:假如两个数相同,对他们进行的排序结果为他们的相对挨次不变。例如A=1,2,1,2,1这里排序之后是A = 1,1,1,2,2 稳定就是排序后第一个1就是排序前的第一个1,其次个1就是排序前其次个1,第三个1就是排序前的第三个1。同
2、理2也是一样。不稳定就是他们的挨次与开头挨次不全都。 (2)原地排序:指不申请多余的空间进行的排序,就是在原来的排序数据中比较和交换的排序。例如快速排序,堆排序等都是原地排序,合并排序,计数排序等不是原地排序。 总体上说,排序算法有两种设计思路,一种是基于比较,另一种不是基于比较。算法导论一书给出了这样一个证明:“基于比较的算法的最优时间简单度是O(N lg N)”。对于基于比较的算法,有三种设计思路,分别为:插入排序,交换排序和选择排序。非基于比较的排序算法时间简单度为O(lg N),之所以简单度如此低,是由于它们一般对排序数据有特别要求。如计数排序要求数据范围不会太大,基数排序要求数据可以
3、分解成多个属性等。 3. 基于比较的排序算法 正如前一节介绍的,基于比较的排序算法有三种设计思路,分别为插入,交换和选择。对于插入排序,主要有直接插入排序,希尔排序;对于交换排序,主要有冒泡排序,快速排序;对于选择排序,主要有简洁选择排序,堆排序;其它排序:归并排序。 3.1 插入排序 (1) 直接插入排序 特点:稳定排序,原地排序,时间简单度O(N*N) 思想:将全部待排序数据分成两个序列,一个是有序序列S,另一个是待排序序列U,初始时,S为空,U为全部数据组成的数列,然后依次将U中的数据插到有序序列S中,直到U变为空。 适用场景:当数据已经基本有序时,采纳插入排序可以明显削减数据交换和数据
4、移动次数,进而提升排序效率。 (2)希尔排序 特点:非稳定排序,原地排序,时间简单度O(nlamda)(1 lamda 2), lamda和每次步长选择有关。 思想:增量缩小排序。先将序列按增量划分为元素个数近似的若干组,使用直接插入排序法对每组进行排序,然后不断缩小增量直至为1,最终使用直接插入排序完成排序。 适用场景:由于增量初始值不简单选择,所以该算法不常用。 3.2 交换排序 (1)冒泡排序 特点:稳定排序,原地排序,时间简单度O(N*N) 思想:将整个序列分为无序和有序两个子序列,不断通过交换较大元素至无序子序列首完成排序。 适用场景:同直接插入排序类似 (2)快速排序 特点:不稳定
5、排序,原地排序,时间简单度O(N*lg N) 思想:不断查找一个序列的枢轴点,然后分别把小于和大于枢轴点的数据移到枢轴点两边,然后在两边数列中连续这样的操作,直至全部序列排序完成。 适用场景:应用很广泛,差不多各种语言均供应了快排API 3.3 选择排序 (1)简洁选择排序 特点:不稳定排序(比如对3 3 2三个数进行排序,第一个3会与2交换),原地排序,时间简单度O(N*N) 思想:将序列划分为无序和有序两个子序列,查找无序序列中的最小(大)值和无序序列的首元素交换,有序区扩大一个,循环下去,最终完成全部排序。 适用场景:交换少 (2) 堆排序 特点:非稳定排序,原地排序,时间简单度O(N*
6、lg N) 思想:小顶堆或者大顶堆 适用场景:不如快排广泛 3.4 其它排序 (1) 归并排序 特点:稳定排序,非原地排序,时间简单度O(N*N) 思想:首先,将整个序列(共N个元素)看成N个有序子序列,然后依次合并相邻的两个子序列,这样始终下去,直至变成一个整体有序的序列。 适用场景:外部排序 4. 非基于比较的排序算法 非基于比较的排序算法主要有三种,分别为:基数排序,桶排序和计数排序。这些算法均是针对特别数据的,不如要求数据分布匀称,数据偏差不会太大。采纳的思想均是内存换时间,因而全是非原地排序。 4.1 基数排序 特点:稳定排序,非原地排序,时间简单度O(N) 思想:把每个数据看成d个
7、属性组成,依次根据d个属性对数据排序(每轮排序可采纳计数排序),简单度为O(d*N) 适用场景:数据明显有几个关键字或者几个属性组成 4.2 桶排序 特点:稳定排序,非原地排序,时间简单度O(N) 思想:将数据按大小分到若干个桶(比如链表)里面,每个桶内部采纳简洁排序算法进行排序。 适用场景:0 4.3 计数排序 特点:稳定排序,非原地排序,时间简单度O(N) 思想:对每个数据消失次数进行技术(用hash方法计数,最简洁的hash是数组!),然后从大到小或者从小到大输出每个数据。 使用场景:比基数排序和桶排序广泛得多。 5. 总结 对于基于比较的排序算法,大部分简洁排序(直接插入排序,选择排序和冒泡排序)都是稳定排序,选择排序除外;大部分高级排序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省汕头市澄海区2024-2025学年高二(上)期末语文试卷
- 3 用橡皮筋驱动小车 教学设计-2024-2025学年科学四年级上册教科版
- 2023-2024学年浙江摄影版(三起)(2020)小学信息技术六年级下册智能交通(教学设计)
- 工作计划草案
- 2024-2025学年高中历史 第五单元 烽火连绵的局部战争 第5课 南亚次大陆的冲突(1)教学教学实录 新人教版选修3
- 2024年六年级品社下册《我的这6年》教学实录 苏教版
- 15《小虾》教学设计-2023-2024学年三年级下册语文统编版
- 6《平行四边形的面积》(教学设计)-2024-2025学年五年级上册数学人教版
- 教育行业政策解读手册
- 本科毕业论文完整范文(满足查重要求)农民负担过重的原因与对策研究
- 前程无忧招聘测评题库及答案
- 2024解析:第十章 浮力综合应用-基础练(解析版)
- 【MOOC】社会调查与研究方法-北京大学 中国大学慕课MOOC答案
- 2024年下半年杭州市余杭区瓶窑镇招考易考易错模拟试题(共500题)试卷后附参考答案
- 自身免疫性脑炎护理常规
- 2025年慢性阻塞性肺疾病全球创议GOLD指南修订解读课件
- 幼儿园小班健康公开课《笑一笑》课件
- 认识晶体(完整版)课件
- 小学五年级家长会-主题班会
- DB11T 211-2017 园林绿化用植物材料 木本苗
- 豪迈集团笔试在线测评题
评论
0/150
提交评论