




已阅读5页,还剩58页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Chapter10排序,排序的基本概念直接插入排序起泡排序简单选择排序快速排序堆排序,6.1基本概念,排序,排序在计算机程序设计中有着非常重要的地位,许多具体应用要求对数据进行排序,而许多复杂的算法也要求以排序为基础。,排序,排序:将一个数据元素的任意序列,重新排列成一个按关键字有序的序列。数据表(datalist):它是待排序数据对象的有限集合。主关键字(key):数据对象有多个属性域,即多个数据成员组成,其中有一个属性域可用来区分对象,作为排序依据,称为关键字。也称为排序码。,排序,有关排序的几个基本问题稳定与不稳定内部排序与外部排序(本章只关注内部排序)性能的衡量,排序方法的分类,按照排序思想插入排序交换排序选择排序归并排序基数排序按照时间复杂度简单排序先进排序其他,6.2直接插入排序,直接插入排序,基本思想:如果要向一个已经排序的顺序表中插入元素且保持表的有序性,则只需先依次比较,找到该元素的位置,然后移动元素进行插入即可。时间复杂度是O(n).基于这一思想,如果要对一个表进行排序,则可以将表看作两个部分,前N个元素已经排好序,再将第N+1个元素插入到前N个元素中。从N=0开始重复这个过程,直到N=L。,直接插入排序,直接插入排序,直接插入排序,直接插入排序的算法typedefintSortData;voidInsertSort(SortDataV,intn)/按非递减顺序对表进行排序SortDatatemp;inti,j;for(i=1;i0;j-)/从后向前顺序比较if(tempVj)/逆序Swap(Vj-1,Vj);/交换exchange=1;/标志置为1,有交换i+;,起泡排序,扩展阅读:双冒泡排序。,链表上的起泡排序,思考:在链表上进行起泡排序,相比顺序表有哪些不同?1:从前向后的过程,需要借助两个指针来完成。2:需要用另外一个指针来指示已经被移动到最后的若干个元素。3:交换的过程有不同做法。实现起来比较繁琐,建议课下练习。,6.4简单选择排序,简单选择排序,在一组数据中选择具有最小排序关键字的一个。若它不是这组数据中的第一个,则将它与这组数据中的第一个对调;在剩下的N-1个数据中重复执行第、步,直到完成。,简单选择排序,简单选择排序的排序过程,简单选择排序,简单选择排序的基本算法typedefintSortData;voidSelectSort(SortDataV,intn)for(inti=0;in-1;i+)intk=i;/选择具有最小排序码的对象for(intj=i+1;jk1且kk2),则不进行操作,退出循环。如果不满足,则将其与叶子节点中较大的一个进行交换,并继续执行循环。,堆的建立,以一个小顶堆的建立过程为例,堆的建立,以一个小顶堆的建立过程为例,注意这一次调整有点麻烦,堆的建立,以一个小顶堆的建立过程为例,堆的建立,以一个小顶堆的建立过程为例,堆的建立,至此,小顶堆的建立就完成了。,堆排序,那么如何使用“堆”这种数据结构来排序呢?只需要如下的过程:将堆中最后一个节点与根节点交换,并且将调整之后的最后一个节点输出出来,就得到了目前堆中最小(最大)的元素。将剩余的N-1个元素重新调整成堆(这一步只需要针对根节点进行调整就可以)。重复以上过程直到全部元素都被输出了。,堆排序,以利用大顶堆进行排序的过程为例:,交换8与49,并输出49,堆排序,以利用大顶堆进行排序的过程为例:,重新调整为大顶堆,然后交换25与16,并输出25,堆排序,以利用大顶堆进行排序的过程为例:,重新调整为大顶堆,然后交换25与8,并输出25,堆排序,以利用大顶堆进行排序的过程为例:,重新调整为大顶堆,然后交换21与8,并输出21,堆排序,以利用大顶堆进行排序的过程为例:,重新调整为大顶堆,然后交换8与16,并输出16,堆排序,以利用大顶堆进行排序的过程为例:,现在堆中只剩下一个元素了,输出,完成排序。,堆排序,堆排序的过程很繁琐,这导致它在数据量很小的情况下性能不佳。但是它的时间复杂度是nlogn级别的,特别是即使在最坏情况下,它的时间复杂度仍然保持nlogn,这是它相对快速排序最大的优势。,堆排序的程序实现,堆有一个很好的性质(思考:哪一点?),利用这一点,可以在一个顺序结构上实现堆排序。“完全二叉树”这一性质还决定了在顺序存储时,如果从顺序表的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西省南昌市2024-2025学年高一下学期期末调研地理试题(解析版)
- 2025广东茂名电白区电海街道城镇公益性岗位招聘笔试模拟试题及答案解析
- 2025福建福清市港城建设开发有限公司招聘1人笔试备考题库及答案解析
- 2025毕节市农业发展集团有限公司及下属6户子企业招聘25人备考试题及答案解析
- 2025甘肃新高原农牧发展有限公司劳务派遣招聘13人备考试题及答案解析
- 2025广东肇庆市怀集县卫生事业单位招聘102人笔试备考题库及答案解析
- 2025安徽安庆市桐城市双港镇村级后备干部招考16人笔试参考题库附答案解析
- 矿山作业安全生产文明施工管理措施
- 2025福建三明市清流县第二高级中学专任教师(劳务派遣)招聘14人考试备考试题及答案解析
- 绿地园林施工安全与文明施工措施
- 政治论文2000字范文
- 一年级体育上册教案
- 农村集体经济合同签订中存在的问题对策建议
- JTS∕T 159-2021 水运工程模袋混凝土应用技术规范
- 2024年(高级)网络规划设计师考试题库大全(含真题、典型题等)
- 环境空气和废气 氯化氢的测定 离子色谱法(征求意见稿)
- 历史有关的书籍
- 2024年度新版中华人民共和国传染病防治法课件
- 精度班组安全标准化汇报
- 2024年国家电网招聘之法学类题库附参考答案【精练】
- 2024上海市奉贤区第八批储备人才及定向选调生招募91人高频考题难、易错点模拟试题(共500题)附带答案详解
评论
0/150
提交评论