C++STL中的最大堆,最小堆
堆,优先队列,头文件和队列是同一个#include<queue>
#include<iostream> #include<queue> using namespace std; int main() { //最大堆 queue<int> max_heap;//默认就是最大堆 queue<int,vector<int>,less<int>> max_heap1; //完整版 //最小堆 queue<int,vector<int>,greater<int>> min_heap; return 0; }
//操作 .size() .top() //堆顶元素 .pop() //堆顶元素pop掉 .push(int x) .emplace(int x) //加入一个元素
用最大堆和最小堆进行排序
#include <iostream> #include <vector> #include <queue> using namespace std; int main() { vector<int> nums{ 5, 1, 2, 3, 6, 4, 2, 3, 7, 8, 5, 4, 6, 9, 2, 3}; priority_queue<int, vector<int>, greater<int>> min_heap; priority_queue<int, vector<int>, less<int>> max_heap; for (int i = 0; i < nums.size(); i++) { min_heap.emplace(nums[i]); max_heap.emplace(nums[i]); } while (!max_heap.empty()) //从大到小 { cout << max_heap.top() << " "; max_heap.pop(); } cout << endl; while (!min_heap.empty()) //从小到大 { cout << min_heap.top() << " "; min_heap.pop(); } cout << endl; return 0; }
下一篇:
栈的入栈和出栈的顺序规律