优先队列的堆实现
堆及其性质
- 采用树形结构实现优先队列的一种有效技术成为 堆,节点数据的存储满足堆序。
- 从根到任何一个叶节点,节点数据优先级递减
- 堆顶元素优先级最高,O(1)时间即可得到
- 位于不同路径上的元素,这里不关心其顺序
- 几个重要性质
- 在一个堆最后追加一个元素,依然是完全二叉树,但未必是堆
- 去掉堆顶,两个子堆上堆序不变
- 去掉堆顶的两个子堆加入根元素,未必是堆(堆序无法保证)
- 去掉堆中最后的元素,不破坏堆序
代码
|
|
复杂度
操作 | 复杂度 |
---|---|
创建操作 | O(n) |
插入和弹出元素 | O(log n) |
- 程序出自《数据结构与算法Python语言描述》