网站大量收购闲置独家精品文档,联系QQ:2885784924

数据结构10研究.ppt

  1. 1、本文档共132页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
判定(80,75,40,62,73,35,28,50,38,25,47,15)是否为堆 80 75 40 62 73 28 35 50 38 25 47 15 完全二叉树 大根堆 练习: 大根堆的根节点,是所有元素中关键字最大的元素 小根堆的根节点,是所有元素中关键字最小的元素 堆排序 基本思想: 如何建?? 如何调整?? (1)将序列r[1..n] 建初堆,交换r[1]和r[n],则r[n]为关键字最大的记录。 (2)将r[1..n-1]重新调整为堆,交换r[1]和r[n-1] ,则r[n-1]为关键字次大的记录。 (3)循环n-1次,直到交换了r[1]和r[2]为止,得到了一个非递减的有序序列r[1..n]。 void HeapSort ( HeapType H ) { // 对顺序表 H 进行堆排序 } // HeapSort for ( i=H.length/2; i0; --i ) HeapAdjust ( H.r, i, H.length ); // 建大顶堆 for ( i=H.length; i1; --i ) { H.r[1]←→H.r[i]; // 将堆顶记录和当前未经排序子序列 // H.r[1..i]中最后一个记录相互交换 HeapAdjust(H.r, 1, i-1); // 对 H.r[1] 进行筛选 } 如何“建堆”? 两个问题: 如何“调整”? 定义堆类型为: typedef SqList HeapType; // 堆采用顺序表表示之 30 1 60 2 40 4 70 5 8 3 12 6 10 7 [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] 30 60 8 40 70 12 10 1、如何将无序序列建成堆 思考:有n 个结点的完全二叉树采用顺序存储,最后一个分支结点的标号是多少? ?n/2? 从第?n/2?个元素起,至第一个元素止,进行反复筛选 堆 30 1 60 2 40 4 70 5 8 3 12 6 10 7 [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] 30 60 8 40 70 12 10 30 1 60 2 40 4 70 5 10 7 [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] 30 60 8 40 70 12 10 无序序列建成堆-1 8 12 3 6 30 1 60 2 40 4 70 5 12 8 10 7 [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] 30 60 12 40 70 8 10 无序序列建成堆-1 3 6 30 1 60 40 4 12 8 10 7 [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] 30 60 12 40 70 8 10 无序序列建成堆-2 3 6 2 70 5 30 1 70 40 4 12 8 10 7 [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] 30 70 12 40 60 8 10 无序序列建成堆-2 3 6 2 60 5 70 40 4 12 8 10 7 [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] 30 70 12 40 60 8 10 无序序列建成堆-3 3 6 2 60 5 30 1 30 40 4 12 8 10 7 [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7

文档评论(0)

502992 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档