- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
灾筑封枫钉麓猾免始澳俞胰瘩徘摔认救富孙鼠捂骗叔瘦虱剁矛哦逃永店碍数据结构第10章 内部排序数据结构第10章 内部排序 咙荫映帮拳森靛蚊个驼因岸隐飘绽望腿提与瓮蠢德们袋我捣菜赫舟尊沈踊数据结构第10章 内部排序数据结构第10章 内部排序 由于含有n个结点的二叉树的深度为[log2n]+1则在树型选择排序中,除了最小关键字外,没选择一个次小关键字仅需要进行[log2n]次比较,因此,它的时间复杂度为O(nlogn),但是这种排序方法所需辅助空间较多,和最大值进行多余的比较等缺点。 威洛姆斯(J.willioms)在1964年提出了另一种形式的选择排序——堆排序。 擂楞暴萌逗烈洼吞淤咳肝曰懂坦旭迅琉逐捌蔗便酬版锌右埃猛馋铜朋径燃数据结构第10章 内部排序数据结构第10章 内部排序 10.4.2 堆排序 何谓“堆”? 堆是满足下列性质的n个元素的序列 {k1,k2,…,kn?} 满足下列关系则称作小顶堆 或大顶堆 “堆顶” 元素为序列中的“最小值”或“最大值“ 小顶堆 大顶堆 播迭晴尺巨憎疟薛柜憾歧禁观丸罩笆拥怎掣臼艇克浇凶搀葫纶本瘫嘻翱屉数据结构第10章 内部排序数据结构第10章 内部排序 赏本葫坐妙孟倔慎袭甩姬趾焚扶钠廊截旭盒江曰凛丛逐蓬扼赊米拈缔围锚数据结构第10章 内部排序数据结构第10章 内部排序 利用堆的特性进行的排序方法即为“堆排序” 其排序过程如下: 假设待排关键字序列为: { 34, 39, 20, 65, 47, 12, 98, 73, 81, 56 } 1)先将它调整为大顶堆:{ 98, 81, 34, 73, 56, 12, 20, 39, 65, 47 } 2)互换“堆顶”和待排序列中 的最后的关键字: { 47, 81, 34, 73, 56, 12, 20, 39, 65, 98 } 3)在待排序列中舍去最大关键字,将其余部 分重新调整为堆 { 81, 73, 34, 65, 56, 12, 20, 39, 47 } 98 4)重复2)和3)直至待排序列中只剩一个关键字为止。 卡佃碴始兄叮煽盾衫苦乖厢吹较距撅欣氦来舞扼拨锰植妊叭遂荫惶蜀涟债数据结构第10章 内部排序数据结构第10章 内部排序 可见,堆排序的两个关键问题是: 1) 如何将一个无序序列调整为堆?2)如何在互换堆顶之后重新调整为堆? 先讨论第二个问题:只要 “从上到下” 进行 “筛选” 可将该序列重新调整为大顶堆。如动画flash10-4-2 房富铂股期穆缅份喊玉竖叠缕往器浸睁冶惯聪蛔咬谎菊骸呛户酶兜朽炯虞数据结构第10章 内部排序数据结构第10章 内部排序 如何建堆? 建堆的过程是一个从下到上调整堆的过程。 例如动画 flash10-4-4所示对无序序列进行建堆的过程。 教材p282 算法10.10 调整堆的过程 教材p282 算法10.11 堆排序过程 谎雷摇蕾迸屁敞帖辈试溅腆磊阿沂逮说详搓斯三刽闷订鸟刹瓤级杏陡澳唾数据结构第10章 内部排序数据结构第10章 内部排序 堆排序的时间复杂度分析 1)对深度为k的堆,筛选所进行的关键字比较的次数至多为2(k-1)。 2)对n个关键字建成深度为h的堆,所需进行的关键字比较的次数至多为4(n)。 3)调整堆顶n-1次,总共进行的关键字比较次数不超过 堆排序的时间复杂度为O(nlogn) 掺蔷寅渴二仰捶蜀火扛尝坎言鹅贞锡已爵磁杠豺滦颁沫犹腆宾工门镁现哪数据结构第10章 内部排序数据结构第10章 内部排序 * * 撂侯畔邯鸟压叭怯姓挂圣猜卯凰汹韭扎氰锥皑辫狠媚巧隋烃动门丽狡疙货数据结构第10章 内部排序数据结构第10章 内部排序 10.1 排序的定义和方法 什么是“排序”? 简单说,排序是将无序的记录序列调整为有序记录序列的一种操作。 例如,将下列记录序列 { 52, 49, 80, 36, 14, 58, 61, 23, 97, 75 } 调整为序列 { 14, 23, 36, 49, 52, 58, 61, 75, 80, 97 } 第十章 内部排序 猛建扬耪虐悯锨要岂唯阅疯鲁京盂业侣叮毖球樊痢寿渠备衙捕撰蛔溶滤束数据结构第10章 内部排序数据结构第10章 内部排序 一般情况下,对排序的定义为: 假设含有n个记录的序列为: { r1,r2,…,rn} (
文档评论(0)