第20讲排序2详解.pptxVIP

  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文档。上传文档
查看更多
数据结构 主讲人:陈红丽 知识点回顾 衡量排序算法的标准 时间复杂度 空间复杂度 稳定性 插入类排序 直接插入排序(顺序查找) 折半插入排序 希尔排序(增量递增) 交换类排序 冒泡排序 快速排序 第20讲 8.4 选择排序 基本思想: 每一趟在后面 n-i +1个中选出关键码最小的对象, 作为有序序列的第 i 个记录 简单选择排序 简单选择排序 算法分析 时间复杂度:O(n2) 空间复杂度:O(1) 方法是稳定的;本实现是不稳定的。 移动次数 最好情况:0 最坏情况:3(n-1) 树形选择排序 排序思想:首先取得 n 个对象的关键码,进行两两比较,得到?n/2 ?个比较的优胜者(关键码小者),作为第一步比较的结果保留下来。然后对这 ?n/2 ?个对象再进行关键码的两两比较,…,如此重复,直到选出一个关键码最小的对象为止。又称为锦标赛排序。 13 38 13 97 38 65 49 38 76 13 13 27 65 27 49 选出冠军的过程:(比较次数=n-1) 13 97 49 38 76 13 65 27 49 ∞ 27 38 27 38 65 76 27 选出亚军的方法:将冠军值改为∞,然后从该叶子结点开始,和其左(或右)兄弟的关键字进行比较,修改从叶子结点到根的路径上各结点的关键字,则根结点的关键字记为次小值。 (比较次数=log2n) 27 27 49 27 27 13 ∞ 38 49 49 算法分析 除第一次选择具有最小关键码的对象需要进行 n-1 次关键码比较外,选择具有次小、再次小等等关键码对象所需的比较次数均为 O(log2n)。总关键码比较次数为O(nlog2n)。 对象的移动次数不超过关键码的比较次数,故锦标赛排序总的时间复杂度为O(nlog2n) 这种排序方法虽然减少了许多排序时间,但是使用了较多的附加存储O(n)。 n个元素的序列{k1,k2,…,kn},当且仅当满足下列关系时,成为堆: 堆排序 什么是堆? 如果将序列看成一个完全二叉树,非终端结点的值均小于或大于左右子结点的值。 (87,78,53,45,65,09,31,17,23) 堆顶元素(根)为最小值或最大值 (09,17,65,23,45,78,87,53,31) 利用树的结构特征来描述堆,所以树只是作为堆的描述工具,堆实际是存放在线性空间中的。 小根堆 大根堆 × 判定(80,75,40,62,73,35,28,50,38,25,47,15)是否为堆 完全二叉树 堆是一种数据结构,( )是堆。 A.(10,50,80,30,60,20,15,18) B.(10,18,15,20,50,80,30,60) C.(10,15,18,50,80,30,60,20) D.(10,30,60,20,15,18,50,80) ( )从二叉树的任一结点出发到根的路径上,所经过的结点序列必按其关键字降序排列。 A.二叉排序树 B.大顶堆 C.小顶堆    D.平衡二叉树 B C 将无序序列建成一个堆 输出堆顶的最小(大)值 使剩余的n-1个元素又调整成一个堆,则可得到n个元素的次小值 重复执行,得到一个有序序列 堆排序 基本思想: 如何建?? 如何调整?? 60 2 40 4 8 3 12 6 [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] 30 60 8 40 70 12 10 如何将无序序列建成堆 思考:有n 个结点的完全二叉树,最后一个分支结点的标号是多少? ?n/2? 60 2 40 4 12 3 8 6 [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] 70 60 12 40 30 8 10 60 2 40 4 [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] 30 60 8 40 70 12 10 无序序列建成堆-1 8 12 3 6 60 2 40 4 12 8 [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] 30 60 12 40 70 8 10 无序序列建成堆-1 3 6 60 40 4 12

文档评论(0)

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

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

1亿VIP精品文档

相关文档