<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="font-size:18px;">众所周知,堆是一个很重要的数据结构,在排序等应用中有着很重要的地位。在STL库中也收录了堆的头文件以及基础的函数。</span></span>
头文件:堆隶属于 #include <algorithm>
函数
建立堆
make_heap(a, a+n,Comp)
默认是建立最大堆的。对int类型,可以在第三个参数传入greater<int>()得到最小堆。
make_heap(a, a+n)默认建立成一个大顶堆
在堆中添加数据
push_heap (a, a+n)
要先在容器中加入数据,再调用push_heap ()
在堆中删除数据
pop_heap(a, a+n)
要先调用pop_heap()再在容器中删除数据
堆排序
sort_heap(a, a+n)
排序之后就不再是一个合法的heap了
添加删除操作,由于容器还未学习,请转读http://blog.youkuaiyun.com/morewindows/article/details/6967409的文章在这里我只介绍它在普通数组中的用法
#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
int a[10],b[10];
int i,n;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
b[i]=a[i];
}
make_heap(a,a+n);//默认建立小顶堆
sort_heap(a,a+n);//堆排序
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
putchar('\n');
return 0;
<span style="background-color: rgb(255, 255, 255);">}</span>
<span style="background-color: rgb(255, 255, 255);">
</span>
<span style="background-color: rgb(255, 255, 255);">以后会有所补充,本博客借鉴</span><span style="color: rgb(255, 255, 255); background-color: rgb(255, 255, 255);">的博文</span>
MoreWindows Blog
的博文