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;