优先队列
优先队列
什么是优先队列
优先队列,有着队列的性质,即从尾部插入,在头部取出,由于它的底层是二叉堆,所以它可以在插入元素的时候将其根据优先级进行排列
时间复杂度
由于底层是二叉堆,将元素从堆底推到堆顶时间复杂度为O(logn),故优先队列插入时间复杂度为O(logn)
用法
跟队列唯一不同的地方在于,队列的头部用front
来访问,但是优先队列底层是堆,所以用top
来访问头部(顶部)
其他用法基本与队列一样
定义
1 | queue<int> q1; //队列 |
自定义优先级
单元素
1 | priority_queue<int> q; //递增 |
1 | priority_queue<int, vector<int>, greater<int>> q; //递减 |
多元素
用结构体存储元素,排序方法跟sort有异曲同工之处
1 | struct book { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Haog's blog!
评论
ValineDisqus