优先队列模板

1.用数组表示二叉树的编号,取出数值时是最小值

int heap[N],sz=0;
void push(int x){
	int i=sz++;
	while(i>0){
		int p=(i-1)/2;
		if(heap[p]<=x)	break;
		heap[i]=heap[p];
		i=p;
	}
	heap[i]=x;
}
int pop(){
	int ret=heap[0];
	int x=heap[sz--];
	int i=0;while(i*2+1<sz){
		int a=i*2+1,b=i*2+2;
		if(b<sz&&heap[b]<heap[a])	a=b;
		if(heap[a]>=x)	break;
		heap[i]=heap[a];
		i=a;
	}
	heap[i]=x;
	return ret;
}

2.编程语言的标准库 声明一个从大到小取出数值的优先队列:

#include<bits/stdc++.h>			//头文件:"queue" 
using namespace std;
int main(){
	priority_queue<int>pque;
	pque.push(3);
	pque.push(5);
	pque.push(1);
	while(!pque.empty()){
		printf("%d\n",pque.top());
		pque.pop();
	}
	return 0;
}

声明一个从小到大取出数值的优先队列:

priority_queue<int,vector<int>,greater<int> >que;
全部评论

相关推荐

🎓学历背景:双非土木硕👨‍💻意向职位:AI应用开发大佬们可以帮我看看简历吗,秋招至今0offer
秋招结束再玩瓦:今年科班都不好找哇……你可以试试交叉岗,比如制造业国企的一些开发算法,或者互联网的边缘岗,it技术支持,运维这些
我的简历长这样
点赞 评论 收藏
分享
Java面试先知:我也是和你一样的情况,hr 说等开奖就行了
点赞 评论 收藏
分享
爱吃烤肠的牛油最喜欢...:50K是ssp了估计,ssp的人家多厉害都不用说,每年比例大概在百分之5左右
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务