优先队列的实现形式之——大根堆
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
struct data{
int pq[100010];
int size=0;
bool ins[100010];
void ih()
{
pq[0]=0x3f3f3f3f;
for(int i=1;i<=10010;i++)
pq[i]=0;
return ;
}
void ip()
{
for(int i=1;i<=size;i++)
{
printf("%d",pq[i]);
}
printf("\n");
return ;
}
void iq(int x)
{
if(ins[x]==true) printf("%d is in the queue\n",&x);
else printf("%d is not in the queue\n",&x);
return ;
}
void top()
{
printf("%d ",pq[1]);
return ;
}
void push(int x)
{
pq[++size]=x;
ins[x]=true;
int n=size;
while(pq[n/2]<=pq[n])
{
swap(pq[n/2],pq[n]);
n=n/2;
}
return ;
}
void pop()
{
this->top();
ins[pq[1]]=false;
swap(pq[1],pq[size]);
size--;
int n=1;
while(n*2+1<=size)
{
int now;
if(pq[n*2]>pq[n*2+1]) now=n*2;
else now=n*2+1;
if(pq[n]<pq[now])
{
swap(pq[n],pq[now]);
n=now;
}
else break;
}
return ;
}
}pq;
主函数自己写233....