一、heap
#include<algorithm>
make_heap
(首位置, 尾位置+1, 可选的cmp函数);
-> 构造堆,将数组堆化
push_heap (首位置, 尾位置+1, 可选的cmp函数);
push_heap (首位置, 尾位置+1, 可选的cmp函数);
-> 添加元素到底层容器末尾,并将堆的作用范围扩展到这个元素,最后调整堆序
pop_heap (首位置, 尾位置+1, 可选的cmp函数);
pop_heap (首位置, 尾位置+1, 可选的cmp函数);
-> 将堆顶元素与堆尾元素交换,并将堆的作用范围向小的方向缩小一个,最后调整堆序
sort_heap (首位置, 尾位置+1, 可选的cmp函数);
sort_heap (首位置, 尾位置+1, 可选的cmp函数);
-> 整个堆进行排序
|
push_heap(heap.begin(),heap.end(),less<int>());
push_heap(heap.begin(),heap.end());
|
按大顶堆调整堆序
|
| push_heap(heap.begin(),heap.end(),greater<int>()); |
按小顶堆调整堆序
|
二、priority_queue
#include<queue>
q.empty() 如果队列为空,则返回true,否则返回false
q.size() 返回队列中元素的个数
q.pop() 删除队首元素,但不返回其值
q.top() 返回具有最高优先级的元素值,但不删除该元素
q.push(item) 在基于优先级的适当位置插入新元素
|
priority_queue<int> que; |
采用默认优先级构造队列 |
|
priority_queue<int,vector<int>,cmp> que; |
按自定义优先级构造队列 |
|
priority_queue<int,vector<int>,greater<int> > que; |
最小值优先
|
|
priority_queue<
int
,vector<
int
>,less<
int
> > que;
|
最大值优先
|
推荐博文:
本文深入探讨了C++中的堆排序算法及其应用,包括make_heap、push_heap、pop_heap、sort_heap等操作。同时,介绍了优先队列(priority_queue)的使用方法,涉及队列的基本操作如empty、size、pop、top、push等,并展示了如何通过自定义优先级构造队列。此外,提供了多种与堆排序和优先队列相关的经典问题和解法。
3046

被折叠的 条评论
为什么被折叠?



