博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
优先队列
阅读量:4310 次
发布时间:2019-06-06

本文共 2079 字,大约阅读时间需要 6 分钟。

寻找队列中的最大值或最小值,出队。

优先队列的底层实现:堆;(对于堆的底层实现,面试时经常会出)。

C++中的优先队列容器:priority_queue

1. 默认从大到小排列:(最大堆)

#include 
#include
#include
using namespace std;int main() { srand(time(NULL)); //产生随机数 priority_queue
pq; for (int i = 0; i < 10;i++) { int num = rand() % 100; pq.push(num); cout << "insert" << num << "in priority queue." << endl; } while (!pq.empty()) { cout << pq.top() << " "; pq.pop(); } return 0;}

2. 小顶堆

#include 
#include
#include
using namespace std;int main() { srand(time(NULL)); //产生随机数 priority_queue
, greater
> pq2; //最小堆,传入为int型,底层数据结构实现一般为vector,比较函数greater for (int i = 0; i < 10;i++) { int num = rand() % 100; pq2.push(num); cout << "insert" << num << "in priority queue." << endl; } while (!pq2.empty()) { cout << pq2.top() << " "; pq2.pop(); } return 0;}

3. 自定义比较函数:

#include 
#include
#include
using namespace std; struct myCmp{ bool operator()(int a, int b){ return a % 10 < b % 10; //比较个位数,个位数越大越靠前 }};int main() { srand(time(NULL)); //产生随机数 priority_queue
pq; for (int i = 0; i < 10;i++) { int num = rand() % 100; pq.push(num); cout << "insert" << num << "in priority queue." << endl; } while (!pq.empty()) { cout << pq.top() << " "; pq.pop(); } cout << endl << endl; priority_queue
, greater
> pq2; //底层是最小堆 for (int i = 0; i < 10;i++) { int num = rand() % 100; pq2.push(num); cout << "insert" << num << "in priority queue." << endl; } while (!pq2.empty()) { cout << pq2.top() << " "; pq2.pop(); } //使用自定义Comparator的priority queue priority_queue
, myCmp> pq3; for (int i = 0; i < 10;i++) { int num = rand() % 100; pq3.push(num); cout << "insert" << num << "in priority queue." << endl; } while (!pq3.empty()) { cout << pq3.top() << " "; pq3.pop(); } return 0;}

 

转载于:https://www.cnblogs.com/Bella2017/p/10302560.html

你可能感兴趣的文章
O055、Detach Volume 操作
查看>>
MyBatis学习(3)
查看>>
otrs离线部署
查看>>
spring ioc原理(看完后大家可以自己写一个spring)
查看>>
[codevs 1039]数的划分
查看>>
【会议记录】第一次例会(9.22)记录
查看>>
SpringBoot与缓存
查看>>
java内存分析
查看>>
current_date与sysdate区别
查看>>
流畅设计 Fluent Design System 中的光照效果 RevealBrush,WPF 也能模拟实现啦!
查看>>
Android源码解析01:下载Android源码
查看>>
NodeJS05
查看>>
Windows10更新后,远程桌面无法登录服务器 提示远程桌面协议 CredSSP 出现漏洞
查看>>
开发一个移动应用之前应该思考的5件事
查看>>
[转] iOS 常用数学函数
查看>>
shiro过滤器解释类
查看>>
使用kubeadm安装K8s-1.14.2
查看>>
2.字符串及其操作
查看>>
操作字符串
查看>>
python 单例模式
查看>>