概述
- 完全二叉堆
- 左式堆
小试牛刀
1 | 单选题 |
用向量实现的效率:
有序向量实现的效率:
用列表实现的效率:
BBST实现的效率:
完全二叉堆
完全二叉树:
完全二叉堆
完全二叉堆:插入和上滤
实例:
代码实现:
1 | template <typename T> void PQ_ComplHeap<T>::insert( T e ) { //将词条插入完全二叉堆中 |
1 | template <typename T> Rank percolateUp( T* A, Rank i ) { //对词条A[i]做上滤,0 <= i < _size |
效率:
完全二叉堆:删除和下滤
实例:
代码实现:
1 | template <typename T> T PQ_ComplHeap<T>::delMax() { //取出最大词条 |
1 | //对向量前n个词条中的第i个实施下滤,i < n |
效率:
左式堆
堆合并:将堆A和堆B合二为一
NPL
习题
1 | 1. 使用以下哪种数据结构实现优先级队列的insert, getMax, delMax接口均可达到O(lgn)的时间复杂度? D |
1 | 2. 栈作为优先级队列的一种特殊情况,其中元素的优先级:A |
1 | 3. 完全二叉树从整体上看的形态是:B |
1 | 4. 完全二叉堆在物理上是向量,其所存储的元素次序是 D |
1 | 5. 在完全二叉堆中(大顶堆),不正确的是 D |
1 | 6. 当前完全二叉堆物理上作为向量是{10, 5, 8, 3, 2, 7},插入新元素9后变为: D |
1 | 7. 当前完全二叉堆物理上作为向量是{10, 5, 8, 3, 2, 7},调用delMax()后变为: C |
1 | 8. Existing n elements need to be organized into a complete binary stack |
1 | 12. 堆排序在流程上类似于以前学过的哪种排序? 选择排序 |
zhangzezhong
学习自:清华大学邓俊辉老师《数据结构 下》课程第十二章 优先级队列