网站大量收购闲置独家精品文档,联系QQ:2885784924

第7章排序试卷.ppt

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 7.4.1 简单选择排序 1.基本思想: 第1趟,从第1个到第n个记录中选择关键码最小的记录与第1个记录交换; 第2趟,从第2个到第n个记录中选择关键码最小的记录与第2个记录交换; … 第i趟, 从第i个到第n个记录中选择关键码最小的记录与第i个记录交换; … 直到第n-1趟,从最后两个记录中选择较小的记录放置在第n-1 位置。排序结束。 * 2.示例: 设排序表:49 14 38 74 96 65 49 8 55 27 第1趟之后:8 14 38 74 96 65 49 49 55 27 第2趟之后:8 14 38 74 96 65 49 49 55 27 (在本位就不用交换) 第3趟之后:8 14 27 74 96 65 49 49 55 38 第4趟之后:8 14 27 49 96 65 74 49 55 38 。。。 第9趟之后: 8 14 27 38 49 49 55 65 74 96 * * 7.4.3 堆排序 简单选择排序的思想简单,易于实现,但其时间性能没有优势,这是因为在每趟的选择中,没有把前面选择过程中的一些有用信息继承下来,因此每趟选择都是顺序的一一进行,如果某一趟的选择能够把前面有用的一些信息继承下来,则定会减少本趟的比较次数,提高排序效率,堆排序就做到了这一点。 * 如:序列 12,36,24,85,47,30,53,91是一个小顶堆; 序列 91,47,85,24,36,53,30,16是一个大顶堆。 1.堆的定义 设有n个元素的序列 R1,R2,…,Rn,当且仅当满足下述关系之一时,称之为堆。 前者称为小顶堆,后者称为大顶堆。 ki≤ k2i k2i+1 ki≥ k2i k2i+1 或 其中i=1,2,…,n/2 * 2.堆排序 堆特点:堆顶元素是整个序列中最大(或最小)的元素。 若将排序表按关键码建成堆,堆顶元素就是选择出的最大元素(或最小),这样就得到n个元素中的第一个的元素。 然后,再对剩下的n-1个元素建成堆,得到n个元素中关键码次大 (或次小)的元素。以此类推,如此反复,直到进行n-1次后,排序结束,便得到一个按关键码有序的序列。称这个过程为堆排序。 因此,实现堆排序需解决两个问题: 1. 如何将n个元素的排序序列按关键码建成堆(初始堆); 2. 怎样将剩余的n-1个元素按其关键码调整为一个新堆。 * 91 47 24 36 53 30 85 16 a.初始堆 输出堆顶元素,再将最后一个元素放入堆顶(为了操作简便,将堆顶元素R1与Rn交换)。 b.堆被破坏 调整:根结点与左右子女较大者比较,若比根小,交换。 c.右子树不满足堆,继续调整 。 d.到了叶子结点,调整结束,堆建成。 85 85 47 47 16 30 53 91 16 47 24 36 53 30 85 91 85 47 24 36 53 30 16 91 * R1与Rn-1交换,堆被破坏。 对R1与Rn-2调整。 仅需调整一次, 堆建成 。 堆调整结束。 85 85 47 47 16 30 53 91 85 30 47 47 16 85 53 91 85 53 47 47 16 85 30 91 * 第二个问题的背景: 输出堆顶元素后,将堆底元素送入堆顶(或将堆顶元素与堆底元素交换),堆可能被破坏。 破坏的情况仅是根结点和其左右孩子之间可能不满足堆的特性,而其左右子树仍然是局部的堆。 在这种情况下,将其R1 … Ri整理成堆。 (i=n-1..1) * 调整方法: 将根结点与左、右孩子中较小(大顶堆为较大)的进行交换。若与左孩子交换,则左子树堆可能被破坏,且仅左子树的根结点处不满足堆的性质;若与右孩子交换,则右子树堆可能被破坏,且仅右子树的根结点处不满足堆的性质。继续对不满足堆性质的子树进行上述操作,直到满足了堆性质或者到叶子结点,堆被建成。 称这个自根结点到叶子结点的调整过程为筛选。 * 91 47 24 36 53 30 85 16 a.初始堆。 输出堆顶元素,再将最后一个元素放入堆顶(为了操作简便,将堆顶元素R1与Rn交换)。 b.堆被破坏 调整:根结点与左右子女较大者比较,若比

文档评论(0)

502992 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档