![数据结构与算法排序相关概要_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-5/28/5bc00785-0d63-4692-94c6-7884a9d61dd7/5bc00785-0d63-4692-94c6-7884a9d61dd71.gif)
![数据结构与算法排序相关概要_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-5/28/5bc00785-0d63-4692-94c6-7884a9d61dd7/5bc00785-0d63-4692-94c6-7884a9d61dd72.gif)
![数据结构与算法排序相关概要_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-5/28/5bc00785-0d63-4692-94c6-7884a9d61dd7/5bc00785-0d63-4692-94c6-7884a9d61dd73.gif)
![数据结构与算法排序相关概要_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-5/28/5bc00785-0d63-4692-94c6-7884a9d61dd7/5bc00785-0d63-4692-94c6-7884a9d61dd74.gif)
![数据结构与算法排序相关概要_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-5/28/5bc00785-0d63-4692-94c6-7884a9d61dd7/5bc00785-0d63-4692-94c6-7884a9d61dd75.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 数据结构与算法一一排序相关 区间排序 ShortSort (Oracle) TopK算法(Knuth) TopMN算法(P.Linux) 数据结构与算法排序相关 冒泡排序 它重复地访问要排序的数列,一次比较两 个元素,如果他们的顺序错误就把他们交 换过来。访问数列的工作是重复地进行直 到没有再需要交换,也就是说该数列已经 排序完成。 FOR I = ITO N-l DO FOR J = 1+1 TO N DO IF (AiAj) THEN swap(Ai,Aj); END FOR END FOR 数据结构与算法排序相关 冒泡排序 数据结构:数组 最差时间复杂度:O(n2) 最优时间复杂度:O
2、何一一因为可以通过判 断一轮比较后是否有交换来判定排序是否 完成 平均时间复杂度:O(n2) 最差空间复杂度:O(n)total, 0(1) auxiliary 数据结构与算法排序相关 冒泡排序 数据结构与算法排序相关 选择排序 首先在未排序序列中找到最小元素,存放 到排序序列的起始位置,然后,再从剩余 未排序元素中继续寻找最小元素,然后放 到排序序列末尾。以此类推,直到所有元 素均排序完毕。 FOR I = 1 TO N DO Ai = FindMin(bN); END FOR 数据结构与算法排序相关 选择排序 数据结构:数组 最差时间复杂度:O(n2) 最优时间复杂度:O(n2) 平均时间
3、复杂度:O(n2) 最差空间复杂度:OG丿total, Oauxiliary 数据结构与算法排序相关 选择排序 数据结构与算法排序相关 插入排序 它的工作原理是通过构建有序序列,对于 未排序数据,在已排序序列中从后向前扫 描,找到相应位置并插入。 FOR I = 2 TO N DO J = FindPos(lJ-l,x); 在有序的序列中找X的位置 MoveNext(JJ); /将需要占用位置的元素后移 AJ = x; /空出的位置放入X END FOR 数据结构与算法排序相关 插入排序 数据结构:数组 最差时间复杂度:O(n2) 最优时间复杂度:O(n2) 平均时间复杂度:O(n2) 最差空
4、间复杂度:OG丿total, Oauxiliary 数据结构与算法排序相关 快速排序 从数列中挑出一个元素,称为”基准”,重 新排序数列,所有元素比基准值小的摆放 在基准前面,所有元素比基准值大的摆在 基准的后面(相同的数可以到任一边)。 这个称为分割操作。递归地(recursive)把 小于基准值元素的子数列和大于基准值元 素的子数列排序。 数据结构与算法排序相关 快速排序 数据结构:Varies 最差时间复杂度:0(n2) 最优时间复杂度:O(nlogn) 平均时间复杂度:0(nlogn)comparisons 最差空间复杂度根据实现的方式不同而不 同 数据结构与算法排序相关 快速排序 数
5、据结构与算法排序相关 归并排序 元素首先分组,每组元素进行比较。然后 每组元素看成一个元素,再分组比较。递 归此过程直到只有一组元素的时候排序完 成。 void merge_sort(int arrf, int first, int last) intmid = 0; if(firstlast) mid = (first+last)/2; /分成两组分别排序 merge_sort(airay,first, mid);/对一个分组排序 merge_sort(array/ mid+ljast);/X个分组排用 mergefarrafirstmidjast);/ 归并两组排序 数据结构与算法排序相关
6、 归并排序 数据结构:数组 最差时间复杂度:O(nlogn) 最优时间复杂度:0(n) 平均时间复杂度:0(nlogn) 最差空间复杂度:0(n) 数据结构与算法排序相关 归并排序 数据结构与算法排序相关 堆排序 堆积树是一个近似完全二叉树的结构,并 同吋满足堆的属性:即子结点的键值或索 引总是小于(或者大于)它的父结点。 WHILE (堆不为空) Ai+ = GetRootFromHeap; / 取出堆根 ShiftHeap;/ 调堆 数据结构与算法排序相关 树排序 首先按照搜索二叉树对数据建树,然后中 序遍历搜索树,即可得到有序数列。 普通二叉搜索树,AVL平衡二叉树等。 数据结构与算法排
7、序相关 树排序 数据结构:数组 最差时间复杂度:平衡树O(nlogn) 非平衡树O(nA2) 最优时间复杂度:O(nlogn) 平均时间复杂度:G(nlogn) 最差空间复杂度:O(n) total, 0(1) auxiliary 数据结构与算法排序相关 桶排序 不基于比较,为每个元素设一个计数器, 记录每个元素出现多少次。 FOR I = 1 TO N DO CAi+; /将兀素丢入相中 END FOR FOR I = 1 TO MAX DO 输出Ci个I; /讲元素依次倒岀桶 END FOR 数据结构与算法排序相关 桶排序 数据结构:数组 最差时间复杂度:0(n) 最优时间复杂度:0(n)
8、 平均时间复杂度:0(n) 最差空间复杂度:O(MAX)total 数据结构与算法排序相关 基数排序 将所有待比较数值(正整数)统一为同样的数位长度 ,数位较短的数前面补零.然后,从最低位开始,依 次进行一次排序这样从最低位排序一直到最高位 排序完成以后,数列就变成一个有序序列. 基数排序的方式町以采用LSD (Least significant digital)或MSD (Most significant digital) , LSD的 排序方式由键值的最右边开始,而MSD则相反, 由键值的最左边开始。 数据结构与算法排序相关 希尔排序 对有n个元素的可比较资料,先取一个小于n的整 数dl作
9、为第一个增量,把文件的全部记录分成dl 个组。所有距离为dl的倍数的记录放在同一个组 中。先在各组内进行直接插入排序;然后,取第 二个增量d2vdl重复上述的分纽和排序,直至所取 的增量dt=l(dtdt-l.d2 H0) H0 = Ai; /替换堆根 ShiftHeap(); 调堆 END FOR 数据结构与算法排序相关 ShortSort 数据结构:数组 最差时间复杂度:O(n+nlogk) 最优时间复杂度:O(n+klogk) 平均时间复杂度:G(n+xlogn) k x K) 如果左堆元素多于K个则继续二分 LeftGroupl-now = Split(LeftGroupnow); S
10、ort(LeftGroupl-now ); /在左堆中排序 数据结构与算法排序相关 TopK 数据结构:数组 最差时间复杂度:O(n+k)log(n/k)+k/ogk) 最优时间复杂度:O(n+k)log(n/k)+k/ogk) 平均时间复杂度:O(n+k)log(n/k)+k/ogk) 最差空间复杂度根据实现的方式不同而不 同 优势:利用随机的基准,可以有效避免全排序 数据结构与算法一一排序相关 TopMN 排序M.N位的元素,则需要抛弃l.M-l,N+l.MAX 两部分的元素。利用二分思想,每次对元素分成 左大右小两堆,分别处理。左堆继续二分分出前 M1个元素,右堆继续二分分出N+1个之后的元素 o排除无效元素后的元素集,再进行排序。 H = Split(A); /元素分成两堆 利用TopK的思想将前个元素排到一组。 利用TopK的思想将N+1位后的元素排到一组。 Sort(A,M,N). 备注:可以不用严格
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年群路密码机系列合作协议书
- 人教版一年级语文下册《吃水不忘挖井人》教学设计
- 2025年速冻丸类制品合作协议书
- 2025年个体诊所合作协议(三篇)
- 2025年买卖别墅合同模板(三篇)
- 2025年产品区域代理合同协议常用版(2篇)
- 2025年产品设计合同(三篇)
- 2025年二年级教研组工作总结(2篇)
- 2025年个人幼儿园的课题总结范文(二篇)
- 2025年个人房屋防水施工合同模板(2篇)
- 城市隧道工程施工质量验收规范
- 2025年湖南高速铁路职业技术学院高职单招高职单招英语2016-2024年参考题库含答案解析
- 五 100以内的笔算加、减法2.笔算减法 第1课时 笔算减法课件2024-2025人教版一年级数学下册
- 2025江苏太仓水务集团招聘18人高频重点提升(共500题)附带答案详解
- 2024-2025学年人教新版高二(上)英语寒假作业(五)
- 2025年八省联考陕西高考生物试卷真题答案详解(精校打印)
- 2025脱贫攻坚工作计划
- Q∕GDW 12118.3-2021 人工智能平台架构及技术要求 第3部分:样本库格式
- 客户的分级管理培训(共60页).ppt
- 广东省义务教育阶段学生转学转出申请表(样本)
- 如何成为一个优秀的生产经理
评论
0/150
提交评论