STL中heap用法

#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("
");
}
void push()
{
    a[13]=8;
    push_heap(&a[1],&a[14],cmp);
    for(int i=1;i<=13;i++)
      printf("%d ",a[i]);
    printf("
");
}
void pop()
{
    pop_heap(&a[1],&a[14],cmp);
    for(int i=1;i<=12;i++)
      printf("%d ",a[i]);
    printf("
");
}
void px()
{
    sort(&a[1],&a[13]);//排序时默认从小到大排 
    for(int i=1;i<=12;i++)
      printf("%d ",a[i]);
    printf("
");
}
int main()
{
    make();//制造一个堆 
    push();//在堆中放入元素 
    pop();//将堆尾元素放到堆顶后进行维护,堆顶元素放到堆尾 
    px();//排序 
    return 0;
} 
View Code
原文地址:https://www.cnblogs.com/harden/p/5708106.html