- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章优先级队列.ppt
归并两个森林: 23 51 24 65 13 21 24 65 14 26 16 18 贝努里队列的存储 每棵树看成是有序树,采用标准的树的存储方式—孩子兄弟链的表示法 整个森林表示成一个指向树根的指针的线性表 13 23 51 24 65 12 21 24 65 14 26 16 18 如下的贝努里队列可表示成: 13 23 24 51 65 12 21 24 65 14 26 16 18 贝努里队列的时间性能 归并:N个元素的队列至多有logN棵树,每两棵树的归并只需要常量的时间。因此最坏情况的时间复杂度为O(logN)。但可以证明平均情况的时间复杂度是常量的。 入队操作的平均时间复杂度是O(1)的 出队操作:首先在队列中找出根结点值最小的树。这需要花费O(logN)的时间。然后又要归并两个优先级队列,又需要O(logN)的时间。所以 删除操作的时间复杂度是O(logN)的 第六章 优先级队列 基本的优先级队列 二叉堆 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; //最大化堆,第2、3参数可缺省 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; } priority_queueint, vectorint, greaterint q; //最小化堆 第六章 优先级队列 基本的优先级队列 二叉堆 D堆 归并优先级队列 STL中的优先级队列 排队系统的模拟 单服务台的排队系统 在单服务台系统中,先到达的顾客先获得 服务,也肯定先离开。到达和离开的次序 是一致的。 事件处理的次序是:顾客1到达、顾客1离 开、顾客2到达、顾客2离开、……、顾客n 到达、顾客n离开 顾客离开顺序和到达顺序一致。只需要一个普通队列保存顾客到达信息 多服务台的排队系统 在多服务台系统中,先到达的顾客先获得服务,但后获得服务的顾客可能先离开; 事件处理的次序可能是:顾客1到达、顾客2到达、 顾客2离开、顾客3到达、顾客1离开、顾客3离 开……、顾客n到达、顾客n离开、…… 发生时间早的事件先处理,发生时间晚的事件后处理。因而需要一个优先级队列存放事件。事件的优先级就是发生的时间 多服务台的排队系统模拟 产生CustomNum个顾客的到达事件,按时间的大小存入事件队列; 置初值 置等待队列为空; 置所有柜台为空闲; 设置等待时间为0; 模拟器开始处理事件: 从队列中取出一个事件。这是第一个顾客的到达事件。 生成所需的服务时间。当前时间加上这个服务时间就是 这个顾客的离开时间。生成一个在这个时候离开的事件,插入到事件队列。 同样模拟器从队列中取出的事件也可能是离开事件,这 时只要将这个离开事件从队列中删去,为他服务的服务台变成了空闲状态,可以继续为别的顾客服务。 模拟类的定义 class simulator{ int noOfServer; //服务台个数 int arrivalLow; //到达间隔时间的下界 int arrivalHigh; //到达间隔时间的上界 int serviceTimeLow; //服务间隔时间的下界 int serviceTimeHigh; //服务间隔时间的上界 int customNum; //模拟的顾客数 struct eventT { int time; //事件发生时间 int type; //事件类型。0为到达,1为离开 bool operator(const eventT e) const {return time e.time;} } ; //设置随机数种子 public: simulator(); //构造函数, 接受用户输入的参数 int av
您可能关注的文档
最近下载
- 贵州省2024年高职(专科)分类考试招收中职毕业生文化综合考试语文试题(含答案).pdf VIP
- 课件:阿片类药物剂量滴定.ppt VIP
- 优秀-说课稿标准模板.doc VIP
- 天安人寿吉祥树终身寿险(分红型)条款.pdf VIP
- (正式版)D-L∕T 904-2015 火力发电厂技术经济指标计算方法.docx VIP
- 认知障碍老人护理指南 (2).pptx VIP
- 提高叠合楼板一次成型验收合格率(获上海QC一等奖).doc VIP
- 2025年江苏省生态环境监测专业技术人员大比武理论试题库(含答案).docx VIP
- GB_T 39016-2020 定制家具 通用设计规范.docx VIP
- 测测达人塔罗题库及答案.doc
文档评论(0)