第九章堆与优先队列.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章堆与优先队列概要

第九章 堆与优先队列 山东财经大学 管理科学与工程学院 9.1 优先队列的基本概念 定义 优先队列中的每一个元素都有一个优先级值。优先队列中元素x的优先级值记为p(x),它可以是一个实数,也可以是一个一般的全序集中的元素。 基本运算 Size( ) 返回优先队列中元素个数。 Emputya() 判断优先队列是否为空 Min( ) 返回优先队列中具有最小优先级值的元素。 push(x) 将元素x插入优先队列。 Pop_Min(x) 删除优先队列中具有最小优先级值的元素,并保存到x中 优先队列举例 排队上车,老弱病残者优先上车 排队候诊,危急病人优先就诊 洗相馆为顾客洗照片,加钱加急者优先洗 分时操作系统运行程序,小程序优先 贪心算法对解分量的选择,按元素的某种特征值,大(或小)的优先 在一个集合中搜索,按元素的某种特征值,大(或小)的优先 处理或服务时只关心对象中谁的优先级最高通常的队列是一种优先队列最先到者优先级最高 9.3 优先级树和堆 极小化优先级树 树中每一结点存储一个元素。 任一结点中存储的元素的优先级值不大于其儿子结点中存储的元素的优先级值 父结点的优先级不高于其儿子结点的优先级。 越接近根的结点中的元素的优先级越高 极大化优先树 堆 如果一棵优先级树是一棵近似满二叉树,那么,这棵具有优先级性质的近似满二叉树(外形像堆)就叫做堆 极小化堆 极大化堆 8 16 9 1 6 2 11 10 5 4 1 6 8 12 9 16 2 11 5 14 关键字:12 19 65 38 27 73 12 19 65 38 27 例如: 是堆(最小堆) 73 关键字:12 19 65 38 27 36 12 19 65 38 27 73 是堆 36 不 [ 12 19 27 11 20] [12 19 65 38 27 73] 12 12 19 27 19 65 11 20 38 27 73 堆的判断练习 非 堆 是 堆 堆的删除 删除堆中最底层、最右边的叶结点,并用其中所存放的元素取代树根中应该删除的元素,然后对堆进行调整。 30 10 15 20 25 40 25 50 30 50 15 20 25 40 25 30 15 50 20 25 40 25 30 15 20 50 25 40 25 堆的插入 先将存放新元素的结点添加在堆的最底层,使之成为一棵近似满二叉树,然后进行调整。 30 15 20 50 25 40 25 8 30 15 20 50 25 8 25 40 30 15 20 50 8 25 25 40 30 8 20 50 15 25 25 40 建堆 自下而上,从右到左 (26, 5,77,1,61, 11,59, 15, 48, 19) 1 26 77 5 59 11 61 15 48 19 1 26 77 5 59 11 61 15 48 19 初始完全二叉树 1 26 77 5 59 11 61 15 48 19 1 19 61 1 26 77 5 59 11 19 15 48 61 2 48 1 建堆 { 75, 87, 68, 92, 88, 61, 77, 96, 80, 72} 霍夫曼编码 使用一个字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方法 树的带权路径长度: 树中所有叶子结点的带权路径长度之和 2 7 9 7 5 4 9 2 WPL(T)= 7?2+5?2+2?3+4?3+9?2 =60 WPL(T)= 7?4+9?4+5?3+4?2+2?1 =89 5 4 前缀码 定义 为了解码时不会出现二义性,要求任意一个字符的编码不能是另一个字符的前缀。 例 {a=0,b=101,c=100,d=111, e=1101,f=1100} 001011101 aabe 霍夫曼编码 构造最优前缀码的算法 根据给定的 n 个权值 {w1, w2, …, wn}构造 n 棵二叉树的集合F = {T1, T2, … , Tn},其中每棵二叉树中均只含一个带权值 为 wi 的根结点,其左、右子树为空树;

文档评论(0)

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

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

1亿VIP精品文档

相关文档