首页 > 其他 > 详细

二叉堆 。。

时间:2016-12-31 11:22:55      阅读:158      评论:0      收藏:0      [点我收藏+]

  模版代码。。。

#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <string>

using namespace std;

int heap[500010],n;
void shiftdown(int i,int m)  // 堆向下调整 
{
    int k,t;
    t=heap[i];
    k=2*i;
    while(k<=m)
    {
        if(k<m&&heap[k]>heap[k+1]) k++;
        if(t>heap[k])
        {
            heap[i]=heap[k];
            i=k;
            k=2*i;
        }
        else break;
    }
}
void shiftup(int x)  //堆向上调整 
{
    int temp;
    temp=heap[x];
    for(int i=x/2;i>0&&temp<heap[i];i=i/2)
    {
        heap[x]=heap[i];
        x=i;
    }
    heap[x]=temp;
}
void del() //删除堆顶元素 
{
   heap[1]=heap[n];
   n--;
   if(n>0)
   {
   shiftdown(1,n);
   }
}
void insert(int x)
{
    n++;
    heap[n]=x;
    shiftup(n);
    }
    void shiftda(int i,int len)
    {
    int t=heap[i],k=2*i;
    while(k<=len)
    {
    if(k<len&&(heap[k]<heap[k+1])) k++;
    if(t<heap[k])
    {
    heap[i]=heap[k];
    i=k;
    k=2*i;
    }
    else break;
    }
    heap[i]=t;
}
void shiftxiao(int i,int len)
{
    int t=heap[i],k;
    k=2*i;
    while(k<=len)
    {
        if(k<len&&heap[k]>heap[k+1]) k++;
        if(t>heap[k])
        {
            heap[i]=heap[k];
            i=k;
            k=2*i;
        }
        else break;
    }
    heap[i]=t;
}
int main()
{
       int t;
       cin>>n;
       for(int i=1;i<=n;i++)
       {
        scanf("%d",&heap[i]);
       }
       for(int i=n/2;i>=1;i--) shiftxiao(i,n); //建堆 
       for(int j=n;j>=2;j--) // 排序 
       {
           t=heap[1];
           heap[1]=heap[j];
           heap[j]=t;
           shiftxiao(1,j-1);
    }
    for(int i=n;i>=1;i--)
    printf("%d ",heap[i]); 
    return 0;
}

  一点也不会MMD....

       例题传送门 

   恶补知识1 http://www.cppblog.com/guogangj/archive/2009/10/29/99729.html

   恶补知识2 http://www.cnblogs.com/QG-whz/p/5173112.html

二叉堆 。。

原文:http://www.cnblogs.com/ruojisun/p/6238860.html

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