首页 > 其他 > 详细

小顶堆的实现

时间:2017-02-01 14:53:46      阅读:253      评论:0      收藏:0      [点我收藏+]
int heap[MAX_N],int 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;
        int b=i*2+2;

        if(b<sz&&heap[b]<heap[a]) a=b;

        if(heap[a]>=x) break;

        heap[a]=x;
        i=a;
    }
    heap[i]=x;
    return ret;
}

 

小顶堆的实现

原文:http://www.cnblogs.com/superxuezhazha/p/6359974.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!