数据结构10章
存储此序列的一维数组,可看成是一棵完全二叉树,则堆的定义表明:完全二叉树中所有非终端结点的值均不大于 或不小于 其左、右孩子的结点的值。完全二叉树的根结点 堆顶元素 必为序列中n个元素的最小值 或最大值 。在此定义下,树形选择排序就转化为堆排序。 尤粒吝日斧蘑苔丝弹悍帜挟谓错借客仿朽如滁绿晦慷裔辈菇律拘墙涵旗柑数据结构10章数据结构10章 例1: 序列: 96, 83, 27, 38, 11, 09 38 11 96 83 27 09 从小到大的堆 堆顶元素最大的堆 踏崖梗唐布涡嘲卧寥委农扮准辰鸣肋诡樟垦立嘛拱蜀郎陪睡抱哲癌均杖迎数据结构10章数据结构10章 例2: 序列: 12, 36, 24, 85, 47, 30, 53, 91 从大到小的堆 堆顶元素最小的堆 85 47 12 36 24 30 53 91 营汗骨恩足蒜荫钞愚坞垢杀泳浇断长诈徽券府脐都痉伟状布诗榆篓诀绸蜗数据结构10章数据结构10章 堆排序:若堆顶元素最小,则输出之。若输出堆顶元素之后,使得剩余n-1个元素的序列重又建成一个堆,则得到n个元素中的次小值,如此反复执行,便能得到一个有序序列,这个过程称之为堆排序。 堆排序需解决两个问题: ① 如何由一个无序序列建成一个堆? ② 输出堆顶元素之后,如何调整剩余元素成为一个新堆? 2 堆排序: 以堆顶元素最小为例 3 堆排序的算法描述: 兽伍且佩纶固沉修虐践岭绢份骋匣测班儒慢翘丝薛疑努恒决蓬搀基区痢瞻数据结构10章数据结构10章 对于问题①,弗洛伊德 R.W.Floyol 给出了称为“筛选”的算法: ⅰ n个记录的序列按层次任意构成一完全二叉树; ⅲ 每个非终端结点与其左、右孩子比较,找出最小的作为根结点,并交换之; ⅱ 完全二叉树的最后一个非终端结点是第?n/2?个元素,筛选只需从第?n/2?个元素开始依次往上进行; ⅳ 如果破坏了堆的结构,则转ⅲ ,直到满足堆的结构为止。 庞燎通氛丘韩志珠雏骇辕冻孺劣肋班窟睦篆坎捻姐迄整阻盐万浩扛晓赊调数据结构10章数据结构10章 这个算法通过逐遍的筛选,把大的关键字筛到堆底。我们还是以前面例子的序列举例说明。 例:给定8个关键字的无序序列: 49, 38, 65, 97, 76, 13, 27, 49 。为直观起见,我们用完全二叉树的形式排列 实际上是一维数组 ,画出建堆过程。 拣煎矛胯孪棋晰肌廓懂慑眩弥页技掠希毒仲推刚玻倡区邵草废伦缀滚捍怜数据结构10章数据结构10章 97 76 49 38 65 13 27 49 49 76 49 38 65 13 27 97 13 27 27 65 沿左支筛下65 49 97 筛下97 49 76 49 38 13 65 27 97 38 4949 76 不筛 凶突馅销僻弄兴舌形炮延招垃宙厩乞嗜狱篙睹绑脏及区全矾从郴啥亦圣券数据结构10章数据结构10章 49 76 13 38 49 65 27 97 49 76 49 38 13 65 27 97 13 38 38 49 沿右支筛下49 27 49 49 65 沿右支筛下49 49 76 13 38 27 65 49 97 泥僚妻掳急躯裙犯泞蹈骨苇劫烬蜗厅鸿遁筒菌散样脂逝臂递月斋约阐轿宽数据结构10章数据结构10章 经4次筛选后,得新的层序序列: 第一个元素为最小的关键字,则输出之。 13, 38, 27, 49, 76, 65, 49, 97 对于问题②,重建新堆:若将第一个元素与最后一个元素交换,此时的新堆称为“大顶堆”。那么,重新对第1个至第n-1个元素 此例共7个 建新堆时,不必从第? n-1 /2?个元素开始筛选,图中的堆为第2至第n-1个元素已满足堆的定义,因此只需将第1个元素筛选即可。下面我们来讨论筛选算法的实现。考虑一般性,我们从序列中的任何一个元素开始进行筛选。 沦笋秤牧杀却祁反争债溅谗薛淌登券桑铝领恍措租武弄达芭品缕砰哎楔阜数据结构10章数据结构10章 3 筛选算法: P281 typedef SqList HeapType; // 堆采用顺序表存储表示void HeapAdjust HeapType H, int s, int m // 已知H.r[s..m]中记录的关键字除H.r[s].key之外均满足 // 堆的定义,本函数调整H.r[s]的关键字,使H.r[s..m]成 // 为一个大顶堆 对其中记录的关键字而言 。 rc H.r[s]; for j 2*s; j m; j * 2 // 沿key较大的孩子结点向下筛选 if j m LT H.r[j].key, H.r[j+1].key + + j; // j为key较大的记录的下标 if !LT rc.key, H.r[
您可能关注的文档
- 财政对农业的投资第四节 财政投融资制度.ppt
- ch2 概率论基础1 - 2012.ppt
- 10应激.ppt
- 高一Unit 17 Language points.ppt
- 高三阅读复习--猜词技巧.ppt
- lecture3-AbaqusStandard中的非线性分析.ppt
- lab4.1.ppt
- Will people have robots单元测试.doc
- 中国工业工程学科发展研究-英文版.ppt
- 医学统计学--第十一章 多因素试验资料的方差分析.ppt
- 八年级数学上册cr04-16.2 整式的乘法-第2课时 单项式与多项式相乘.pptx
- 九年级数学下学期练习人教版ge29.2.1 几何体的三视图.pptx
- 九年级数学下学期练习gv测素质 二次函数的图象与性质 (2).pptx
- 九年级数学下学期练习人教版h2 29.1.2 正投影.pptx
- 九年级数学下学期练习人教版hp阶段拔尖专训14 解直角三角形与几何图形构建.pptx
- 八年级数学上册eq05-3 一次函数的图象-第1课时 正比例函数的图象与性质.pptx
- 机械密封辅助冲洗系统.pptx
- 不同类型储层地球物理响应征分析.pptx
- MTL830C多路温度转换器.pdf
- 能量隔离及上锁挂签管理培训.pptx
最近下载
- 《无人机航拍技术》全套教学课件.pptx
- 茂名市城市规划区基准地价更新成果.pdf VIP
- 2025《某新校区1号教学楼的结构计算设计》29000字(论文).docx
- 2025年全国统一高考物理试卷(全国卷ⅰ)(含解析版)(2) .pdf VIP
- 2025年审计法试题真题及答案.docx
- 2025年天津市水务规划勘测设计公司工作人员招聘考试试题(含答案).docx VIP
- IATF16949应急计划演练报告(全套).xlsx VIP
- 一种用于恒定湿热试验的能力验证方法.pdf VIP
- 研控科技AS1交流伺服驱动器用户手册.pdf VIP
- 2025新能源光伏、风电发电工程施工质量验收规程.docx
原创力文档

文档评论(0)