- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构第十章部排序
数据结构第十章 内部排序 10.1 基本概念 关键字 是记录(数据元素)中的一个(或多个)字段。通常用作检索和排序记录的依据。 关键字通常可以进行比较操作。 10.1 基本概念 排序:设含有n个记录的文件{R1,R2,...,Rn},其相应的关键字为{K1,K2,...,Kn},将记录按关键字值非递减(或非递增)顺序排列的过程,称为排序。 排序的稳定性:对所有的Ki=Kj (i≠j),若排序前Ri领先于Rj,排序后Ri仍领先于Rj,则称该排序方法是稳定的,反之,称为不稳定的。稳定性是对序列中的两个相同的关键字在初始序列和最终有序序列中相对位置(即领先关系)是否变化。 排序分类 内部排序:待排序文件的全部记录存放在内存进行的排序,称为内部排序。 外部排序:排序过程中需要进行内外存数据交换的排序,称为外部排序。 10.1 基本概念 内排序分类: 按排序过程依据的原则分为: 插入排序 交换排序 选择排序 归并排序 计数排序 按排序过程所需的工作量分: 简单排序 先进排序 基数排序 10.2 插入排序 10.2.1 直接插入排序 它是最简单的排序方法 基本思想:依次将每个待排序的记录插入到一个有序子文件的合适位置(有序子文件记录数增1) 例如:已有待排序文件为:45,34,78,12,34,32,29,64。首先将文件的第一个记录,视为有序文件,然后从第二个记录开始,直到最后一个记录,依次将他们插入到有序文件的合适位置。 10.2 插入排序 直接插入排序算法 说明:监视哨L.r[0]的作用: 保存记录L.r[i]的副本; 监视下标j是否越界,自动控制循环结束 10.2 插入排序 算法分析 直接插入排序的算法简洁,容易实现。从时间来看,排序的基本操作为:比较两个记录的大小和移动记录。其中: ? 最小比较次数:Cmin = n-1 = O(n) ? 最大比较次数:Cmax =(2+3+…+n)=(n+2)(n-1)/2 = O(n2 ) ? 最小移动次数:Mmin = 0 ? 最大移动次数:Mmax = (2+1 + 3+1 + … + n+1) = O(n2) 若待排序记录序列中出现各种可能排列的概率相同,则可取上述最好情况和最坏情况的平均情况。在平均情况下的关键字比较次数和记录移动次数约为 n2/4。因此,直接插入排序的时间复杂度为 o(n2)。 10.2 插入排序 结论 直接插入排序的效率与待排文件的关键字排列有关; 直接插入排序的时间复杂度为O(n2); 直接插入排序是稳定的(这一点由过程中WHILE语句的条件“<”保证的)。 10.2 插入排序 10.2.2 折半插入排序(Binary Insertsort) 由于是在有序子文件中确定插入的位置,因此可用折半查找来代替直接插入排序法中的顺序查找,从而可减少比较次数。 基本思想 设在顺序表中有一个记录序列 R[1], R[2], …, R[n]。其中,R[1], R[2], …, R[i-1] 是已经排好序的记录。 在插入 R[i] 时,利用折半搜索法寻找 R[i] 的插入位置。 10.2 插入排序 折半插入排序算法 10.2 插入排序 算法分析 折半插入排序所需要的关键字比较次数与待排序记录序列的初始排列无关,仅依赖于记录个数。在插入第 i 个记录时,需要经过 ?log2i? +1 次关键字比较,才能确定它应插入的位置。将 n 个记录用折半插入排序所进行的关键字比较次数为O(nlog2n) . 折半插入排序的时间复杂度仍为O(n2) 当 n 较大时,总的关键字比较次数比直接插入排序的最坏情况要好得多,但比其最好情况要差。 当初始排列已经按关键字排好序或接近有序时,直接插入排序比折半插入排序执行的关键字比较次数要少。折半插入排序的记录移动次数与直接插入排序相同,依赖于记录的初始排列。 折半插入排序是一个稳定的排序方法。 10.2 插入排序 10.2.3 Shell排序 基本思想:希尔排序(Shell`s Methool)又称为缩小增量排序,也是一种插入排序方法。它将待排序数据文件分割成若干个较小的子文件,对各个子文件分别进行直接插入排序,当文件达到基本有序时,再对整个文件进行一次直接插入排序。 适用条件 如果待排序文件基本有序,即文件中具有特性: r[i].key Max {r[j ].key} 1≤j<I 的记录数较少 ,则文件中大多数记录不需要进行插入, 因而排序效率可以提高,接近于O(n)。 10.2 插入排序 例1:设初始关键字为: 第一趟以步长为5分割为5个子文件: {R1,R6} {R2,R7} {R3,R8} { R4,R6} {R5,R10} 对每个子文件进行直接插入排序 第二趟以步长为3对第一趟排序结果分
您可能关注的文档
最近下载
- 新能源汽车驱动电机及控制系统检修-实训工单.docx VIP
- 第九章讲 食品干燥机械设备.ppt VIP
- 【中职专用】语文(高教版2023职业模块)4.1《活动策划》 课件.pptx VIP
- 第七单元 数学广角——植树问题整理和复习(教案)人教版数学五年级上册.docx VIP
- 全国优质课一等奖人音版六年级音乐上册《小河淌水》课件.pptx
- 学术英语(医学)知到智慧树期末考试答案题库2025年天津医科大学.docx VIP
- 附着式脚手架(爬架)安全管理.pptx
- 2022年吐鲁番市鄯善县社区工作者招聘考试试题.pdf VIP
- 危害因素辨识环因素辨识.ppt VIP
- 高中英语学习兴趣培养.doc VIP
原创力文档


文档评论(0)