利用优先队列 priority_queue 实现堆排序

【知识点】 priority_queue 中文意思为“优先队列”,本质上是一个堆。 这使得程序员在编码过程中,可以直接利用 priority_queue 构建堆,从而避免了手动构建堆的繁琐。 priority_queue 常用的基本操作与队列相同。如: top(),访问队头元素 empty(),判断队列是否为空 size(),返回队列元素个数 push(),插入元素到队尾并排序。大根堆递减排序,小根堆递增排序。 pop(),弹出队头元素 【算法代码】

#include<bits/stdc++.h>
using namespace std;

priority_queue<int> G; //Large Root Heap
priority_queue<int,vector<int>,greater<int> > L; //Small Root Heap

int main() {
	int x;
	while(cin>>x) {
		G.push(x);
		L.push(x);
	}

	while (!G.empty()) { //Large root heap, decreasing output
		cout<<G.top()<<" ";
		G.pop();
	}
	cout<<endl;

	while(!L.empty()) { //Small root heap, increasing output
		cout<<L.top()<<" ";
		L.pop();
	}
	cout<<endl;

	return 0;
}


/*
in:
20 40 32 67 40 20 89 300 400 15

out:
400 300 89 67 40 40 32 20 20 15
15 20 20 32 40 40 67 89 300 400
*/

【参考文献】 https://blog..net/hnjzsyjyj/article/details/119813641 https://blog..net/hnjzsyjyj/article/details/108929993

经验分享 程序员 微信小程序 职场和发展