《数据结构》学习笔记 第10章 优先级队列

倖福魔咒の 提交于 2020-02-04 10:42:31

1, 需求:根据优先级而不是数据进来的次序进行处理。

2, 优先级队列接口:

3,几种可能的实现:

  • 基于向量/有序向量:部分接口效率有待改进。
  • 基于列表/有序列表:部分接口效率有待改进。
  • 基于BBST:三个接口均可O(logN)复杂度。
    • 但BBST过于强大了,需要查找极值元;不需要维护全序关系,只需偏序即可。

4, 完全二叉堆:借助于完全二叉树,实现优先级队列。

  • 完全二叉树:
  • 完全二叉堆,及其实现:

  • 堆序性:完全二叉堆的灵魂。

    • 堆序性定义:任何一个节点,在数值上,都不会超过他的父亲。 

    • 最大元:在根节点处 (内部数组首元素)。 

5,完全二叉堆的插入与上滤

  • 效率:渐进意义上 O(logN). 常数意义上,存在改进的空间。

6,完全二叉堆的删除与下滤

  • 效率:渐进意义上 O(logN). Note:每次下滤,做两次比较。

7, 完全二叉堆的批量建堆

  • 自上而下的上滤:O(n), 效率不高。
  • 自下而上的下滤:O(logn)
  •  

     

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!