下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、排序算法总结 | 各种排序算法总结含代码【汇总】排序算法总结 " />插入排序原理依次选择一个待排序的数据,插入到前边已排好序的序列中。性能时间复杂度为 O(N ),空间复杂度为 O(1) 。算法是稳定的,比 较次数和交换次数都与初始序列有关。优化直接插入排序每次往前插入时,是按顺序依次往前找,可在这 里进行优化, 往前找合适的插入位置时采用二分查找的方式, 即折半 插入。折半插入排序相对直接插入排序而言:平均性能更快,时间复 杂度降至 O(NlogN) ,排序是稳定的, 但排序的比较次数与初始序列 无关,总是需要 foor(log(i)+1 次排序比较。使用场景当数据基本有序
2、时,采用插入排序可以明显减少数据交换和数 据移动次数,进而提升排序效率。代码希尔排序原理插入排序的改进版,是基于插入排序的以下俩点性质而提出的改进方法:插入排序对几乎已排好序的数据操作时,效率很高,可以达到 线性排序的效率。但插入排序在每次往前插入时只能将数据移动一位,效率比较所以希尔排序的思想是:先是取一个合适的 gap缩小间隔 gap ,例如去 gap=ceil(gap/2) ,重复上述子序列划分和排序直到,最后 gap=1 时,将所有元素放在同一个序列中进行插入 排序为止。性能开始时, gap 取值较大,子序列中的元素较少,排序速度快, 克服了直接插入排序的缺点 ;其次, gap 值逐渐
3、变小后,虽然子序列 的元素逐渐变多, 但大多元素已基本有序, 所以继承了直接插入排序的优点,能以近线性的速度排好序。代码选择排序原理每次从未排序的序列中找到最小值,记录并最后存放到已排序序列的末尾性能时间复杂度为 O(N ),空间复杂度为 O(1) ,排序是不稳定的 (把最小值交换到已排序的末尾导致的 ),每次都能确定一个元素所在的 最终位置,比较次数与初始序列无关。代码快速排序原理分而治之思想:Divide : 找 到 基 准 元 素 pivot , 将 数 组 Ap.r 划 分 为Ap.pivotpos-1 和 Apivotpos+1 q ,左边的元素都比基准小,右边的元素都比基准大 ;C
4、onquer :对俩个划分的数组进行递归排序 ;Combine :因为基准的作用,使得俩个子数组就地有序,无需 合并操作。性能快排的平均时间复杂度为 O(NlogN) ,空间复杂度为 O(logN) , 但最坏情况下,时间复杂度为 O(N ),空间复杂度为 O(N); 且排序是 不稳定的, 但每次都能确定一个元素所在序列中的最终位置, 复杂度 与初始序列有关。优化当初始序列是非递减序列时,快排性能下降到最坏情况,主要因为基准每次都是从最左边取得,这时每次只能排好一个元素。所以快排的优化思路如下: 优化基准,不每次都从左边取,可以进行三路划分,分别取最左边,中间和最右边的中间值,再交换到最左边进
5、行排序 ;或者进行随机取得待排序数组中的某一个元素,再交换到最左边,进行排序。在规模较小情况下,采用直接插入排序代码归并排序原理分而治之思想:Divide :将 n 个元素平均划分为各含 n/2 个元素的子序列 ;Conquer :递归的解决俩个规模为 n/2 的子问题 ;Combine :合并俩个已排序的子序列性能时间复杂度总是为 O(NlogN) ,空间复杂度也总为为 O(N) ,算 法与初始序列无关,排序是稳定的。优化优化思路:在规模较小时,合并排序可采用直接插入 ;在写法上,可以在生成辅助数组时,俩头小,中间大,这时不 需要再在后边加俩个 while 循环进行判断,只需一次比完。代码1
6、0堆排序原理堆的性质:是一棵完全二叉树;反之为最每个节点的值都大于或等于其子节点的值,为最大堆 小堆。11堆排序思想:将待排序的序列构造成一个最大堆,此时序列的最大值为根节点依次将根节点与待排序序列的最后一个元素交换再维护从根节点到该元素的前一个节点为最大堆,如此往复,最终得到一个递增序列性能时间复杂度为 O(NlogN) ,空间复杂度为 O(1) ,因为利用的排序空间仍然是初始的序列,并未开辟新空间。算法是不稳定的,与初始序列无关。12使用场景想知道最大值或最小值时, 比如优先级队列, 作业调度等场景代码计数排序原理先把每个元素的出现次数算出来,然后算出该元素所在最终排 好序列中的绝对位置
7、(最终位置 ),再依次把初始序列中的元素,根据 该元素所在最终的绝对位置移到排序数组中。13性能时间复杂度为 O(N+K) ,空间复杂度为 O(N+K) ,算法是稳定 的,与初始序列无关,不需要进行比较就能排好序的算法。使用场景算法只能使用在已知序列中的元素在 0-k 之间,且要求排序的 复杂度在线性效率上。代码桶排序14原理根据待排序列元素的大小范围,均匀独立的划分 M 个桶将N 个输入元素分布到各个桶中去再对各个桶中的元素进行排序此时再按次序把各桶中的元素列出来即是已排序好的性能15时 间 复 杂 度 为 O(N+C)O(C)=O(M(N/M)log(N/M)=O(NlogN-NlogM) ,空间复杂度为O(N+M) ,算法是稳定的,且与初始序列无关。使用场景算法思想和散列中的开散列法差不多,当冲突时放入同一个桶 中;可应用于数据量分布比较均匀,或比较侧重于区间数量时。基数排序原理对于有 d 个关键字时,可以分别按关键字进行排序。有俩种方法:16MSD :
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中学生通过化学实验研究酸碱中和反应在烹饪中的应用课题报告教学研究课题报告
- 2025年直播带货主播五年培育专业能力报告
- 2024年湖南开放大学马克思主义基本原理概论期末考试笔试题库
- 2025年天津音乐学院马克思主义基本原理概论期末考试真题汇编
- 2025年苏州幼儿师范高等专科学校马克思主义基本原理概论期末考试真题汇编
- 2024年渤海理工职业学院马克思主义基本原理概论期末考试真题汇编
- 2025年莱芜职业技术学院马克思主义基本原理概论期末考试笔试真题汇编
- 2025年陕西交通职业技术学院马克思主义基本原理概论期末考试参考题库
- 2025年江西行政管理干部学院马克思主义基本原理概论期末考试真题汇编
- 2024年重庆三峡医药高等专科学校马克思主义基本原理概论期末考试笔试题库
- 西安市2024陕西西安市专职消防员管理中心招聘事业编制人员笔试历年参考题库典型考点附带答案详解(3卷合一)
- 2025年盐城港控股招聘面试题库及答案
- 浙江省宁波市海曙区2023-2024学年一年级上学期数学期末试卷(含答案)
- 江西省九江市2024-2025学年上学期期末考试 七年级 数学试题
- 品牌商户入驻大型购物中心流程
- 碳积分交易平台市场分析报告
- 学校食堂防鼠培训内容
- 应急管理概论真题及答案
- 储粮企业安全培训班课件
- 国网培训课件
- 酚类毒性代谢通路研究-洞察及研究
评论
0/150
提交评论