c++ 优先级队列
时间: 2023-11-30 15:40:36 浏览: 119
优先级队列测试程序c++
C++中的优先级队列是一种特殊的队列,它可以根据元素的优先级自动排序。在优先级队列中,元素按照一定的规则进行排序,每次取出优先级最高的元素。C++中的优先级队列是通过堆来实现的,堆是一种完全二叉树,它有两种类型:最大堆和最小堆。在最大堆中,父节点的值大于或等于其子节点的值,而在最小堆中,父节点的值小于或等于其子节点的值。
以下是一个使用优先级队列实现堆排序的C++代码:
```c++
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
void heap_sort(vector<int>& nums) {
priority_queue<int, vector<int>, greater<int>> pq; // 定义一个小根堆
for (int num : nums) {
pq.push(num); // 将所有元素加入小根堆
}
for (int i = 0; i < nums.size(); i++) {
nums[i] = pq.top(); // 取出小根堆中的最小元素
pq.pop();
}
}
int main() {
vector<int> nums = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
heap_sort(nums);
for (int num : nums) {
cout << num << " ";
}
return 0;
}
```
阅读全文