文件名称:优先队列-双端堆
文件大小:524KB
文件格式:ZIP
更新时间:2017-05-31 15:52:10
优先队列 双端堆
里面包含了源码,测试文档,和实验报告。都是我自己写的。如果有BUG,可以私信我。 作业题目:编写一个优先队列,完成 查找,删除,插入 操作。且每个操作的时间复杂度要在(logn)内。 其实很早前就拿到这个题目了,只是一直没定下用那种数据结构做,在图书馆借了本数据结构的书,认真的看了,小堆-大堆,左高树,双端堆,二项树等数据结构。决定选择双端堆,来完成我的课程设计作业。 双端堆,可看成2颗树:1.根节点为空 2.左子树为小顶堆 3.右子树为大顶堆 4.左子树中的值比对应右子树的节点的值小。若对应的右子树节点为空,则对应点为其父节点。 个人认为这种数据结构还是蛮简单方便的,当然,为了更简便,我使用了2个数组来模拟小顶堆和大顶堆。 编写起来,取得了蛮好的效果。~ 查询最大优先队列的元素,和最小优先队列的元素,时间复杂度为o(1) 因为数组的第一个元素便是我们所需要得要的元素。 而插入操作,只要判断应该插入那棵树,也将是O(1),然而之后需要调整,此时的时间复杂度在O(logN) 内。 删除操作,也是将数组中的第一个数删除。O(1),删除之后,调整堆时,时间复杂度也在O(logN)内。
【文件预览】:
priority_queue
----priority_queue.dsw(536B)
----priority_queue.dsp(3KB)
----Debug()
--------vc60.pdb(52KB)
--------priority_queue.exe(196KB)
--------vc60.idb(41KB)
--------priority_queue.obj(28KB)
--------priority_queue.pch(217KB)
--------priority_queue.ilk(224KB)
--------priority_queue.pdb(513KB)
----priority_queue.ncb(49KB)
----priority_queue.cpp(10KB)
----优先队列使用说明——耀文.doc(112KB)
----测试报告.doc(111KB)
----priority_queue.opt(48KB)
----priority_queue.plg(780B)
----优先队列实验报告.doc(206KB)