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

本文共 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

你可能感兴趣的文章
关于软件盘覆盖住布局
查看>>
Unity3D 控制物体移动、旋转、缩放
查看>>
UVa 11059 最大乘积
查看>>
UVa 12545 比特变换器
查看>>
数组分割问题求两个子数组的和差值的小
查看>>
10个著名的思想实验1
查看>>
composer 报 zlib_decode(): data error
查看>>
linux下WPS的使用
查看>>
java 中 finally里面写了return 会发生什么?
查看>>
Web Api 利用 cors 实现跨域
查看>>
hdu 3938 并查集
查看>>
谈谈hashcode和equals的用法
查看>>
instanceof
查看>>
BZOJ 题目1036: [ZJOI2008]树的统计Count(Link Cut Tree,改动点权求两个最大值和最大值)...
查看>>
《深入分析Java Web技术内幕》读书笔记之JVM内存管理
查看>>
python之GIL release (I/O open(file) socket time.sleep)
查看>>
网络穿透
查看>>
2015/8/4 告别飞思卡尔,抛下包袱上路
查看>>
软件开发与模型
查看>>
Codeforces Round #306 (Div. 2) A
查看>>