您的位置:首页 > 其它

STL中heap用法

2016-07-26 16:58 429 查看
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int a[20]={0,29,23,20,22,17,15,26,51,19,12,35,40};
int cmp(int a,int b)//小根堆
{
return a>b;
}
void make()
{
make_heap(&a[1],&a[13],cmp);
for(int i=1;i<=12;i++)
printf("%d ",a[i]);
printf("\n");
}
void push()
{
a[13]=8;
push_heap(&a[1],&a[14],cmp);
for(int i=1;i<=13;i++)
printf("%d ",a[i]);
printf("\n");
}
void pop()
{
pop_heap(&a[1],&a[14],cmp);
for(int i=1;i<=12;i++)
printf("%d ",a[i]);
printf("\n");
}
void px()
{
sort(&a[1],&a[13]);//排序时默认从小到大排
for(int i=1;i<=12;i++)
printf("%d ",a[i]);
printf("\n");
}
int main()
{
make();//制造一个堆
push();//在堆中放入元素
pop();//将堆尾元素放到堆顶后进行维护,堆顶元素放到堆尾
px();//排序
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: