[计算机软件及应用]内部排序ppt.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[计算机软件及应用]内部排序ppt

第十章 内部排序 £10.4 选择排序 £10.4.1 简单选择排序 选择排序(Selection Sort)的基本思想是:每一趟n-i+1(i = 1, 2, … , n-1) 个记录中选取关键字最小的记录作为有序序列中第i个记录 (1)算法实现: 一趟简单选择排序的操作为:通过n-i次关键字间的比较,从n-i+1个记录 中选出关键字最小的记录,并和第i(1≤i≤n)个记录交换之。 对L.r[1..n]中记录进行简单选择排序的算法为:令i从1至n-1,进行n-1趟 选择操作,如算法10.9所示。 算法10.9如下: void SelectSort (SqList L) { //对顺序表L作简单选择排序 for (i = 1; i L.length; + + i) { //选择第i小的记录,并交换到位 j = SelectMinkey (L, i); //在中L.r[1..L.length]选择key最小的记录 if (i != j) L.r[i]←→L.r[j]; //与第i个记录交换 } // for } // SelectSort (2)简单选择排序的改进 选择排序的主要操作是进行关键字间的比较。因此改进简单选择排序 应减少“比较”。 显然,在n个关键字中选出最小值,至少进行n-1次比较,若能利用前 n-1次比较所得信息,则可减少以后各趟选择排序中所用的比较次数。 例如,在8个运动员中决出前3名至多需要11场比赛,而不是7+6+5=18 场比赛(前提:若乙胜丙,甲胜乙,则认为甲必能胜丙)。 £10.4.2 树形选择排序 出最小关键字的记录为止。这个过程可用一棵有n个叶子结点的完全二叉树表示。 两两比较,然后在其中 个较小者之间再进行两两比较,如此重复,直至选 树形选择排序(Tree Selection Sort),又称锦标赛排序(Tournament Sort), 是一种按照锦标赛的思想进行选择排序的方法。首先对n个记录的关键字进行 例如,图10.8(a)中的二叉树表示从8个关键字中选出最小关键字的过程。8 个叶子结点中依次存放排序之前的8个关键字,每个非终端结点中的关键字均等 于其左、右孩子结点中较小的关键字,则根结点中的关键字即为叶子结点中的 最小关键字。 (a) 选出最小关键字为13 13 38 13 38 65 13 27 49 38 65 97 76 13 27 49 27 38 27 38 65 76 27 49 38 65 97 76 ∞ 27 49 输出13之后 (b) 选出次小关键字为27 38 38 38 65 76 49 38 65 97 76 49 ∞ ∞ 49 49 输出13,27之后 (c) 选出居第三的关键字为38 图10.8 树形选择排序示例 在输出最小关键字 之后,根据关系的可传 递性,欲选出次小关键 字,仅需将叶子结点中 的最小关键字(13)改 为“最大值”,然后从该 叶子结点开始,和其左 (或右)兄弟的关键字 进行比较,修改从叶子 结点到根的路径上各结 点的关键字,则根结点 即为次小关键字。同理, 可依次选出从小到大的 所有关键字。 如图10.8(b)和 (c)所示。 树形选择排序的时间复杂度:由于含有n个叶子结点的完全二叉树的深度为 ,则在树形选择排序中,除了最小关键字之外,每选择一个次小关键 次比较,因此它的时间复杂度为O(nlog2n)。 字仅需进行 £10.4.3 堆排序 堆的定义如下:n个元素的序列{k1, k2, … , kn}当且仅当满足以下关系时, 称之为堆。 (1)定义 ki≤k2i 或 ki≤k2i ki≤k2i+1 ki≤k2i+1 例如,下列两个序列为堆{96,83,27,38,11,09},{12,36,24,85, 47,30,53,91},对应的完全二叉树如图10.9所示。 96 83 27 11 38 09 12 36 24 47 85 91 53 30 (a) 堆顶元素取最大值 (b) 堆顶元素取最小值 图10.9 堆的示例 堆排序(Heap Sort):若在输出堆顶的最小值之后,使得剩余n-1个元 素的序列重又建成一个堆,则得到n个元素中

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档