优先队列与堆归类.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程实验指导书 题 目: 优先队列与堆 学生姓名 : 李楠 20100820210 李双 20100820211 李桐 20100820212 专业班级 : 通信工程二班 背景 优先级队列( priority queue )就是遵循两个排序规则的集合。首先,具有高优先级的项 目在先。第二,具有相同优先级的项目使用先进先出方法来确定其排序。 用到优先队列的地方:凡是需要取出集合中最值元素的地方。 构建霍夫曼编码 构建霍夫曼编码需要找到结点集合中频率最小的两个结点。 然后合并结点插入到集 合。依次循环。 一些任务调度算法 比如操作系统中线程调度算法, 有的是按照优先级来调度的, 每次都执行优先级最 高的线程。 合并 n 个有序文件为一个有序文件。 首先把 n 个有序文件的第一个元素都提取出来, 放入优先队列中, 然后取出最小的 元素。然后再插入元素到优先队列,在取出最小元素。 由于优先队列内部一般是采用堆实现的, 所以, 所有适用于堆得算法, 都适用于优 先队列。比如,排序,找中位数,找最大的 K 个数等。 可以以很多方式实现优先队列, 比如链表、 二叉查找树。 但从时空复杂度优化的角度来 看,对于优先队列最普遍的实现是堆。堆的意义就在于:最快的找到最大 / 最小值,在堆结 构中插入一个值重新构造堆结构,取走最大 / 最下值后重新构造堆结构,其时间复杂度为 O(logN) ,而其他方法最少为 O(N) 。 问题描述 假设某医生看病人的顺序是由病人的病情严重程度来决定。 护士按照所有病人来医院的 时间顺序给病人编号 ID ,依次为 1,2 ,3,… ,n ;并且根据病人的病情严重程度设置 Priority 值,病越重, Priority 的值越小。当医生开始工作时,护士根据病人的 Priority 值,由小到大 依次安排病人看病。试为护士编写程序安排病人看病的先后次序。 一、需求分析 1. 本程序要求采用利用最小值堆实现一个优先队列。 2. 利用优先队列存入所有病人的信息(编号和病情严重程度) 。最后利用优先队列获 得病人看病的次序。 3. 在 Dos 界面输出病人看病的次序。 4 . 测试数据 输入 1 15 2 3 3 5 4 20 5 10 -1 -1 输出 2 3 5 - 1 - 数据结构课程实验指导书 1 4 二、概要设计 抽象数据类型 为实现上述程序的功能,应以整数存储用户的输入,以及计算出的结果。 算法的基本思想 根据用户输入利用数组结构建树的方法建立最小值堆。 程序的流程 程序由三个模块组成: (1) 输入模块:完成多组两个正整数的输入,存入结构体 heapnode (堆结点)中。 (2 ) 计算模块:将用户的输入存入堆结点中利用 siftdown 函数调整为最小值堆。 (3) 输出模块:屏幕上显示最小值排序。 三、详细设计 物理数据类型 typedef struct heapnode // 堆

文档评论(0)

蔡老二学教育 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档