简介
优先队列类似队列,在尾部插入元素,在头部移除元素。不同的是优先队列内的元素有优先级,移除的是优先级最大的元素。内部实现方式是堆(heap),大顶堆或小顶堆。
堆(heap)是一种用数组实现的一种完全二叉树结构,节点是数组元素,父子节点之间的关系用数组下标来关联。以大顶堆为例,其父节点的值大于等于其子节点的值,小顶堆则相反。
| 元素 | 10 | 7 | 2 | 5 | 1 |
|---|---|---|---|---|---|
| 下标 | 0 | 1 | 2 | 3 | 4 |
数组下标从0开始,对于元素 i,左孩子为元素 2*i+1, 右孩子为元素2*i + 2。
实现
pub struct Heap {}impl Heap {fn new() -> Self {}// 插入fn push(&mut self, val: i32) {}// 删除fn pop(&mut self) -> Option<i32> {}// 堆顶元素fn top(&mut self) -> Option<i32> {}}
