西南交通大学信息科学与技术学院数据结构课件第10章 排序.pptVIP

西南交通大学信息科学与技术学院数据结构课件第10章 排序.ppt

  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文档。上传文档
查看更多
第十章 内部排序 基本概念 基本概念 排序过程进行的操作 评价排序算法的标准 基本假设 插入排序 直接插入排序 直接插入排序 直接插入排序 直接插入排序 折半插入排序 希尔插入排序 希尔插入排序 希尔插入排序 希尔插入排序 希尔插入排序 希尔插入排序 交换排序--冒泡排序 交换排序--冒泡排序 交换排序--冒泡排序 交换排序--快速排序 交换排序--快速排序 交换排序--快速排序 交换排序--快速排序 交换排序--快速排序 交换排序--快速排序 交换排序--快速排序 选择排序 选择排序--简单选择排序 选择排序--简单选择排序 选择排序--堆排序 选择排序—堆排序 选择排序—堆排序 选择排序—堆排序 选择排序—堆排序 选择排序—堆排序 选择排序—堆排序 选择排序—堆排序 选择排序—堆排序 选择排序—堆排序 选择排序—堆排序 选择排序—堆排序 归并排序 归并排序 归并排序 归并排序 基数排序--多关键字排序 基数排序--多关键字排序 基数排序 基数排序--链式基数排序 基数排序--链式基数排序 基数排序--链式基数排序 基数排序--链式基数排序 各种内部排序方法的比较 各种内部排序方法的比较 作业 算法分析: 第i趟排序需比较n-i次,共n-1趟 移动记录最少为0,最多为3(n-1) 关键字比较为n(n-1)/2 因此: 算法时间复杂度为O(n2) 算法空间复杂度: 只需交换数据的一个辅助空间。为就地排序。 排序是非稳定的(交换后可能改变了相对位置)。 堆:设有n个元素的序列: {k1, k2, ..., kn} 对所有的i=1,2,...,(int)(n/2),当满足下面关系: ki≤k2i,ki≤k2i+1 或 ki≥k2i,ki≥k2i+1 这样的序列称为堆。 堆的两种类型: 根结点最小的堆----小根堆。 根结点最大的堆----大根堆。 根结点称为堆顶 即:在一棵完全二叉树中,所有非叶结点的值均小于(或均大于)左、右孩子的值。 例:{ 96,83,27,38,11,09} {12,36,24,85,47,30,53,91} 对应的二叉树结构为: 96 83 27 38 11 09 大根堆 12 36 24 85 47 30 53 91 小根堆 堆排序:是一种树型选择排序,特点是,在排序过程中,把R[1..n]看成是一个完全二叉树的存储结构,利用完全二叉树双亲结点和孩子结点的内在关系,在当前无序区中选择关键字最大(最小)的记录。 堆排序步骤: 1、从k-1层的最右非叶结点开始,使关键字值大(或小)的记录逐步向二叉树的上层移动,最大(或小)关键字记录成为树的根结点,使其成为堆。 2、逐步输出根结点,令r[1]=r[i](i=n,,n-1,...,2),在将剩余结点调整成堆。直到输出所有结点。 例:设由关键字集合:{ 49,38,65,97,76,13,27,49) 49 38 65 97 76 13 27 49 76 13 27 49 38 65 97 49 49 38 65 97 76 13 27 49 49 97 65 49 76 13 27 38 97 76 65 49 49 13 27 38 38 76 65 49 49 13 27 97 76 49 65 38 49 13 27 97 第1个与第8个交换 前7个调整成堆 27 49 65 38 49 13 76 97 第1个与第7个交换 13 49 27 38 49 65 76 97 13 65 27 49 49 27 38 97 第1个与第6个交换 前6个调整成堆 65 49 27 38 49 13 76 97 第1个与第5个交换 前5个调整成堆 49 65 27 13 49 27 38 97 13 38 27 49 49 65 76 97 49 65 27 38 13 27 49 97 第1个与第4个交换 前4个调整成堆 第1个与第3个交换 前3个调整成堆 49 65 27 49 38 27 13 97 49 65 27 27 13 38 49 97 13 27 38 49 49 65 76 97 第1个与第2个交换 前2个调整成堆 49 65 27 27 13 38 49 97 排序完成:13,27,38,49,49,65,76,97 这里要解决两个问题: 1、如何由一个无序序列建成一个堆; 2、输出一个根结点后,如何将剩余元素调整成一个堆。 大根堆:把一棵完全二叉树调整成堆的过程实际上是一个筛选过程,小的关键字筛到筛底,大的关键字浮到筛上面。调整时,取左右孩子的大者进行调整。 1、将一个无序序列建成一

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档