第十章 内部排序教案.pptVIP

  1. 1、本文档共149页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十章 内部排序 本章内容 讨论和比较各种排序方法:插入排序、选择排序、归并排序和基数排序的基本思想、算法特点、排序过程以及它们的时间复杂度分析。 在每类排序方法中,重点讨论性能先进的高效方法(如,交换排序类中的快速排序,选择排序类中的堆排序等)。 本章要点 理解各种排序方法的特点,并能加以灵活应用; 了解各种方法的排序过程及其依据的原则。基于“关键字间的比较”进行排序的方法; 掌握各种排序方法的时间复杂度的分析方法。能从“关键字间的比较次数”分析排序算法的平均情况和最坏情况的时间性能; 快速排序、堆排序和归并排序等高效方法是本章的学习重点和难点。 基本概念 排序 排序又称分类,是计算机中很重要的操作,它是将一个数据元素(或记录)的任意序列排列成一个按关键字有序的序列。 定义 设有记录序列{R1、R2………..Rn},其相应的关键字序列为{K1、K2………..Kn}; 若存在一种确定的关系:Kx≤Ky≤… ≤Kz,则将记录序列{R1、R2………..Rn}排成按该关键字有序的序列{ Rx、Ry ……….. Rz}的操作,称之为排序。 关系是任意的,如通常经常使用的小于、大于等关系。 排序过程中的两种基本操作 比较操作:比较两个关键字值的大小的操作。 移动操作:将记录从一个位置移动到另一个位置的操作。 基本概念(续) 排序方法 稳定的排序方法 若待排序列中存在两个或以上关键字相等的记录,设Ki=Kj (1≤ij≤n),即排序前Ri在Rj前,若在排序后 Ri仍在Rj前,则称排序是稳定的。 不稳定的排序方法 待排序列中存在两个或以上关键字相等的记录,设Ki=Kj(1≤i j≤n),即排序前Ri在Rj前,若在排序后Rj却在Ri前,则称排序是不稳定稳定的。 基本概念(续) 排序的分类 内部排序 待排序列记录全部存放在计算机随机存储器中进行排序的过程称为内部排序 外部排序 待排序列记录数量太大,不能全部存放在计算机随机存储器中,排序过程中需对计算机外存进行访问,这种排序过程称为外部排序。 待排序列的三种存储结构 顺序存储:存储在地址连续的一组存储单元中(以此为例); 链式存储:存储在地址不连续的一组存储单元(链表)中; 地址存储:记录顺序存储,另设关键字和记录地址排序。 10.1 插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 一种简单的排序方法 将记录一个个插入到已排序好的有序表中,从而得到长度增加的新的有序表。 插入排序(续) 直接插入排序性能分析 比较次数 最好情况 n-1 最坏情况 (n+2)(n-1)/2 平均比较次数 (n+4)(n-1)/4 移动次数 最好情况 2(n-1) 最坏情况 (n+4)(n-1)/2 平均移动次数 (n+8)(n-1)/4 直接插入排序的时间复杂度为 O(n2)。但在待排序列有序的的情况下,直接插入排序的时间复杂度下降为 O(n)。 插入排序(续) 折半插入排序 与直接插入排序不同之处在于查找插入位置时不是用顺序查找,而是用折半查找。 移动次数与直接插入排序相同,只是比较次数少了,因此其时间复杂度也为 O(n2)。 2-路插入排序 目的:减少排序过程中移动记录的次数; 代价:需要 n 个记录的辅助空间d 将 r[1] 赋值给d[1],将d 看成循环的,其它记录均与 d[1] 比较,比较小则在 d[1] 前插入,反之则在 d[1] 后插入。 表插入排序 附设指针域,改变指针的值,不移动记录而得到排序结果 折半插入排序 折半插入排序 折半插入排序 插入排序(续) 希尔排序---“缩小增量排序” 用一定的增量间隔将待排序列分组,每组都采用简单插入排序 排序完一遍后,缩小增量间隔,再对新的分组采用简单插入排序;反复此过程,直至增量间隔为 1 ,即整个待排序列为一组时,执行一遍简单插入排序后结束。 希尔排序 希尔排序的时间复杂度与增量序列有关,分析起来很复杂,有人认为为 O(n1.5),也有人认为为 O(n1.3); 如何选择最佳d序列,目前尚未解决; dlta[k] = 2t-k+1-1 0≤k≤t≤log2(n-1) dlta[k] = 2t-k+1 0≤k≤t≤log2(n-1) dlta[k]=(3t-k-1)/2 0≤k≤t≤log3(2n+1) 1: 8191 4095 2047 1023 511 255 127 63 31 15 7 5 3 1 2: 8193 2049 1025 513 257 129 65 33 17 9 5 3

文档评论(0)

沃爱茜 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档