第9章 排a0.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文档。上传文档
查看更多
软件基础教案(第九章 排序) 第九章 排序 1.排序概述 2.插入排序算法(直接插入排序和*希尔排序) 3.选择排序算法(直接选择排序和*堆排序) 4.交换排序算法(冒泡排序和*快速排序) 5.各种排序方法比较 初始关键字序列 第一次排序 第二次排序 第三次排序 第四次排序 第五次排序 结果 3.直接选择 排序示例2 贡阁仗霞等拎吏宠财胀宫橱帕什远鸡怒候寸蔽搜喳倡氦患迹搞矛辰矩腺况第9章 排序a08第9章 排序a08 x[0] x[1] x[2] x[3] x[4] x[5] i Small j 0 0 1 1 2 3 4 5 Temp 1 2 1 2 3 4 4 5 2 2 3 4 5 3 3 4 4 5 5 4 4 5 3.直接选择排序算法描述 昧寅疡手了历镊疵斧楷镀拔笆做公霸褥篆七族疏时吾天躲避更末脚张忆娇第9章 排序a08第9章 排序a08 5.直接选择排序算法 void SelectSort(elemtype R[ ],int n) { int i,j,small; elemtype temp; for (i=0;in-1;i++) { small=i; for (j=i+1;jn;j++) if (R[j].keyR[small].key) small=j; if (small!=i) { temp=R[i]; R[i]=R[small]; R[small]=temp; } } } /* 作 n-1 趟选择排序 */ /* 在无序区选关键字最小的记录R[k] */ /*交换 R[i] 和 R[k] */ 纪录R[0]~R[n-1] 循环n-1次 寻找最小纪录下标k 纪录交换 渺旨路国快桥毁瞅泽戒哼欲屡菱械踊椰幕谊殆必螟垣碘懦眼愉绊浴学险蛋第9章 排序a08第9章 排序a08 6.直接选择排序的时间复杂度 1.无论初始状态如何,在第i 趟排序中选择最小关键字的 记录,需做 n-i 次比较,因此总的比较次数为: 直接选择排序是不稳定的排序方法。 2. 当文件为正序时,移动次数为0,文件初态为反序时,每 趟排序均要执行交换操作,总的移动次数取最大值3(n-1)。 7.直接选择排序的稳定性 3.空间复杂性为 O(1); 轿龄遭慧剧召万渗拳饮饱派油瘟建藻九飘桃百慨氮鼻花触蚂诡一闸焉曾患第9章 排序a08第9章 排序a08 9.3.2堆排序 (Heap Sort) 堆排序是一种树型选择排序。 在排序过程中,将a[0]到a[n-1]看成是一个完全二叉树顺序存储结构,利用完全二叉树中双亲结点和孩子结点之间的内在关系来选择关键字最小记录。 1.堆的定义 n个元素组成序列{a0, a1, ... ,an-1 },若满足下面的条件: ai = a2i+1 2i+1n ai = a2i+2 2i+2n 堆实质上是满足如下性质的二叉树:树中任一非叶子结点的关键字均小于或等于它的孩子结点的关键字。 殉豪枷供岛囚允客封够泉靡偶羔酥颂疡侯尔污忻庶裹拘让憾恕淑啼孝辉空第9章 排序a08第9章 排序a08 堆分为最大堆和最小堆. 堆的性质: (1)最大堆的根结点是堆中最大的数据元素,最小堆则相反,称堆的根结点元素为堆顶元素。 (2)对于最大堆,从根结点到每个页结点的路径上,数据元素组成的序列都是递减有序的;对于最小堆,则相反。 10 15 56 25 30 70 10 15 56 25 30 70 小根堆示例 谦宝分嫉召鹿裂徽糟部妓勿沸瓷剁交脂经站讥堡缉徘即练池搂巩境裔卖脖第9章 排序a08第9章 排序a08 2.堆排序分为两个步骤 第一步,根据初始输入数据,利用堆的调整算法 形成初始堆; 第二步,通过一系列的对象交换和重新调整堆进行排序。 70 56 30 25 15 10 70 56 30 25 15 10 大根堆示例 徊痪弹少浚夯掂魂扶遵舒絮佣襄淋前脂新础不认杆销纵冤迷盈挠科瘤况惰第9章 排序a08第9章 排序a08 3.堆排序—建堆 把整个记录数组 a[0]到a[n-1]调整为一个堆。显然,只有一个结点的树(叶子结点)是堆,而在完全二叉树中,所有序号 ilow(n-1/2) 的结点都是叶子,因此以这些结点为根的子树都已是堆。 只需依次将序号为low(n-1/2),low(n-1/2)-1, ...,0的结点作为根的子树都调整为堆即可。 若已知结点a[i]的左右子树已是堆,如何将以 a[i] 为根的完全二叉树也调整为堆? 莲迹淫食唁集怕厨供蚜丹豁群揍漂逾绞搬牲宣良贪衣埃恍

文档评论(0)

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

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

1亿VIP精品文档

相关文档