- 1、本文档共260页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 二项堆 二项堆支持插入、删除和归并操作。最坏情况下的时间复杂性是O(logN),但平均的插入时间是一个常量。 二项堆表示为一个二项树的集合。 * 二项堆树 二项堆树是一棵普通的树,不是二叉树。 高度为0的二项堆树是单个节点,高度为k的二项堆树Bk是将一棵Bk-1加到另一棵Bk-1的根上形成的。 二项堆树满足堆的有序性 * B0 B1 B2 B3 * 二项堆里树Bk的特性 Bk有2k个节点 第d层的节点数是二项堆系数 * 优先级队列的表示 把优先级队列表示为二项堆树的集合。每个高度至多有一棵二项堆树。这样,对于给定的元素个数,这个集合是唯一的,即元素个数的二进制表示。 如13个元素,可表示为1101。即该集合由B3、B2和B0组成 * 六个元素的二项堆: 16 18 12 21 24 65 14 26 23 51 24 65 13 七个元素的二项堆: * 二项堆的操作 归并 入队 出队 * 归并操作 由低到高依次归并两个优先级队列中高度相同的树。如果由于前一次归并而出现三棵高度相同的树时,留下一棵,归并其余两棵。 高度相同的树的归并:将根节点大的作为根节点小的树的子树。 归并的时间效益:N个元素的队列有logN棵树,因此最坏情况为O(logN)。 * 归并以下两个队列: 14 26 23 51 24 65 13 16 18 12 21 24 65 H1 H2 归并B0:由于只有H2有B0,所以无需归并 归并B1:形成以下的树 14 26 16 18 现在有三棵B2,留下一棵,归并其余两棵 * 最后的队列: 13 23 51 24 65 12 21 24 65 14 26 16 18 * 二项堆的操作 归并 入队 出队 * 插入 插入是归并的特例 为被插入节点形成一棵单节点的树组成的集合,归并两个集合 时间效益:最坏情况为O(logN),相当于二进制加法中的加1,但每次都有进位的情况。一般进位进到中间的某一位会终止。即当原先集合中缺少Bi时,则归并i次,由于每棵树的出现是等概率的,因此平均归并两次就能结束。 * 贝努里队列的操作 归并 入队 出队 * 删除 找出具有最小根值的树T 将T从原先的集合中删掉 在T中删除根节点 归并T与原先的集合 * 在以下的队列中删除最小元素: 13 23 51 24 65 12 21 24 65 14 26 16 18 最小元素出现在B3中,删除最小元素12,形成下列森林: 21 24 65 14 26 16 18 * 归并两个森林: 23 51 24 65 13 21 24 65 14 26 16 18 * 二项堆的时间性能 归并:N个元素的队列至多有logN棵树,每两棵树的归并只需要常量的时间。因此最坏情况的时间复杂度为O(logN)。但可以证明平均情况的时间复杂度是常量的。 入队操作的平均时间复杂度是O(1)的 出队操作:首先在队列中找出根结点值最小的树。这需要花费O(logN)的时间。然后又要归并两个优先级队列,又需要O(logN)的时间。所以删除操作的时间复杂度是O(logN)的 * 第6章 优先级队列 基本的优先级队列 二叉堆 D堆 归并优先级队列 STL中的优先级队列 排队系统的模拟 * STL中的优先级队列 头文件:queue 类模版:priority_queue 实现方式:二叉堆 主要成员: Void push( const Object x) Const Object top() const Void pop() Bool empty() Void clear() * 使用实例 #include iostream #include queue using namespace std; int main() { priority_queueint q; q.push(10); q.push(1); q.push(5); q.push(8); q.push(0); q.push(4); q.push(9); q.push(7); q.push(3); q.push(6); q.push(2); while (!q.empty()) {cout q.top() ; q.pop();} return 0; } * 第6章 优先级队列 基本的优先级队列 二叉堆 D堆 归并优先级队列 STL中的优先级队列 排队系统的模拟 * 单服务台的排队系统 在单服务台系统中,先到达的顾客先获得服务,也肯定先离开。到达和离开的次序是一致的。 事件处理的次序是:顾客1到达、顾客1离开、顾客2到达、顾客2离开、……、顾客n到达、顾客n离开 只需要一个普通队列保存顾客到达信息 * 多服务台的排队系统 在多服务台系统中,先到达的顾客先获得服务,但后获得服务的顾客
您可能关注的文档
- 第1章 软件测试入门.pptx
- 第4章 CI测试学习 文档 参考.pptx
- 第2章 需求和设计评审.pptx
- 第5章-如何开展系统功能测试.pptx
- 第7章-安全性测试学习 文档 参考.pptx
- 第6章-性能测试学习 文档 参考.pptx
- 第8章 移动app测试学习 文档 参考.pptx
- 第9章 基于模型的测试学习 文档 参考.pptx
- 数据结构 - 第三部分学习 文档 参考.ppt
- 第8章 输入输出学习 文档 参考.pptx
- 四川省德阳市罗江中学2025届高三考前热身化学试卷含解析.doc
- 山东省枣庄现代实验学校2025届高三下学期第五次调研考试化学试题含解析.doc
- 吉林省长春市十一高中等九校教育联盟2025届高三一诊考试生物试卷含解析.doc
- 2025届江苏省盐城市伍佑中学高考仿真模拟化学试卷含解析.doc
- 2025届广西贺州中学高考冲刺押题(最后一卷)生物试卷含解析.doc
- 安徽省池州市贵池区2025届高三第一次模拟考试生物试卷含解析.doc
- 宁夏银川一中2025届高三(最后冲刺)化学试卷含解析.doc
- 广东省广州市增城区四校联考2025届高考压轴卷化学试卷含解析.doc
- 2025届邯郸市第一中学高考生物必刷试卷含解析.doc
- 2025届安徽省安庆市石化第一中学高考仿真卷化学试卷含解析.doc
文档评论(0)