- 1、本文档共69页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章不相交集数据结构Union-Find
heyichao@sjzue.edu.cn 4.2 堆 排序数组: 那么插入运算就需要移动很多元素,开销也较大. 优先队列的有效实现是使用一种称为堆的简单数据结构。 对数据结构支持下面的运算: Delete-max[H]:删除最大键值的数据项 Insert[H,x]:插入项x到堆H中 Delete[H,i]:从堆H中删除第i项 Makeheap[A]:将数组A转换成堆 堆的特性蕴含着:沿着每条从根到叶子的路径,元素的键值以非升序排列。 ( 大顶堆) 元素H[j]的父节点如果不是根节点,则存储在H[ ?j/2 ? ]中。 算法复杂度分析 算法4.1 INSERT 输入:堆H[1…n]和元素x 输出:新的堆H[1…n+1], x为其元素之一 1. n= n+1{增加H的大小} 2. H[n] x 3. SIFT-UP(H, n) 看另外一个堆建立方法: 在Θ(n)的时间内,用n个元素来建立一个堆,下面给出这种方法的实现细节。 算法复杂度分析: (1)设T是一个完全二叉树,高度是k=?logn? 。 (2)设A[j]对应第i层的第j个结点,则调用sift-down函数需要调用的次数应该最多是k-i(注:k是树的高度)(自底而上扫描连接的数据)。 (3)根据二叉树的理论知:二叉树的第i层最多有2i个结点,则循环的上界应该为: 另外一种分析方法: 1、简单的分析: 每次调用SIFT-DOWN()函数的时间为O(logn),一共应该有n/2次调用,所以总的时间复杂度上线是O(nlogn)。 但是这个上限太高了。(这就意味着几乎每一个结点都在执行sift_down()函数行为) 分析一个确界: 1、 事实上,需要执行SIFT-DOWN()函数的结点很少,而且对于不同的节点执行SIFT-DOWN()函数的次数也是不同的,这跟每一个结点所处的高度和所连接的数据相关。 step 2.由于A中各项的最大值存储在A[1]中,可以将A[1] 和A[n]交换,使得A[n]是数组中最大元素。 (排序:将数据依大小,顺序放在数组中,最后一个是最大的,故交换A[1]和A[n]) 这时, A[1] 中的元素可能小于存放在它的一个子节点中的元素,于是用过程SIFT-DOWN将A[1…n-1]转换成堆。 (调整堆) 接下来将 A[1] 和A[n-1]交换,并调整数组A[1…n-2]成为堆。交换元素和调整堆的过程一直重复,直到堆的大小变成1为止,这时A[1] 是最小的。 优先级队列的应用 1、堆作为一个优先级队列,用于排序吗?可以! 但是,应用最多的还是:快速排序。 2、基于最大堆的最大优先级队列。 优先级队列:一种用于维护由一组元素构成的集合S的数据结构。 支持如下操作: INSERT(S,x): MAXIMUM(S): EXTRACT_MAX(S):去掉并返回S中的具有最大关键字的元素。 INCREASE_KEY(S,x,k): 将元素x的关键字的值增加到k,这里的k值不能小于x的原关键字的值 3、应用举例:分时OS的作业调度。 应用最大堆的优先级队列,记录需要被调度的各种作业以及他们之间的优先级的关系。 作业完成或被中断时,应用EXTRACT_MAX(S)从所有的等待队列里面选择一个优先级最大的作业进入调度,任何时候一个新作业都可以使用INSERT()操作加入到队列中。 4、小顶堆基于事件驱动的模拟器 (1)队列中的各项是需要模拟的事件; (2)每一个事件都需要一个发生事件作为关键字; (3)事件模拟需要按照事件发生的时间顺序进行; (4)一个事件的模拟可能会导致对于稍后对另外一个事件模拟的发生; (5)新来的模拟事件应用INSERT插入队列 为限制每棵树的高度,采用按秩合并的措施:给每个节点存储一个非负数作为该节点的秩,记为rank,节点的秩基本上就是它的高度。 设x和y是当前森林中两棵不同的树的根,初始状态时,每个节点的秩是0,在执行运算UNION(x,y)时,比较rank(x)和rank(y) 引理4.1 包括根节点x在内的树中节点的个数至少是2rank(x)。 证明:采用假设法进行推理。 设存在两个树x和y,x、y的秩均为0,上述定理成立。考虑非0时,未合并操作前,假设上述定理仍然成立,归纳合并情况如下: (1)rank(x)rank(y),则合并成为以y为根的一棵树,且树y的节点数增加,但rank(y)不变
您可能关注的文档
- 第六章电化学与检测技术.ppt
- 上课我们享有广泛的权利.ppt
- 上课《欢庆》课件.ppt
- 第六章气体射流多媒体课件.ppt
- 不同空间设计.ppt
- 第六章第二、三、四节.ppt
- 不可错过的互联网关键趋势198页.doc
- 第六章第二节_基因工程及其应用(好).ppt
- 不锈钢焊接工艺技术及焊接工艺规程.doc
- 第六章相关与回归().ppt
- 第2课 诸侯纷争与变法运动(16张)【课件46】.pptx
- 民歌采风图片3.docx
- 会计-备考指导-高志谦 (1).pdf
- 高考生物命题趋势分析及复习策略研究.ppt
- 专题5 运动变化问题 - 学生版新 (八年级上期中).ppt
- 第28章 样本与总体.pptx
- 2019高三区域地理美国.doc
- 2023设备工程质量管理与检验(考前押题划书) (1).pdf
- 新编大学英语(第四版)综合教程B4U4(浙江海洋大学版)课件 B4U4 Shifting social interactions Reading 2.pptx
- 幼儿卫生与保育 国规-融媒体 课件 4.2 幼儿膳食配制与饮食卫生指导.pptx
最近下载
- 第一课整理书包有条理(课件)-一年级上册劳动鄂教版.pptx
- QJ 2850A-2011 航天产品多余物预防和控制.doc
- 2025道德与法治九年级上册开学第一课(含视频).pptx
- 消防质量保证体系及质量保证措施v2.pdf VIP
- 《智慧运输运营》课件——项目七 物流运输决策.pptx VIP
- Unit 7(单元解读课件)-八年级英语上册同步备课系列(人教版).pptx VIP
- (2021-2025)中医医院“十四五”建设与发展规划.pdf VIP
- 活在课堂里 课件.pptx VIP
- 中华传统文化教学设计(山东教育出版社)【四年级】.docx
- 最新苏教版小学数学六年级上册(全套)试卷【含答案】.doc
文档评论(0)