插入法建立一个最大堆

来源:互联网 发布:淘宝中专毕业证复印件 编辑:程序博客网 时间:2024/06/15 09:00
//用插入的方法建堆#include <iostream>#define PARENT(i) i>>1using namespace std;void MAX_HEAP_INSERT(int A[],int next){    while(1)    {        int par=PARENT(next);        if(next>1 && A[par]<A[next])        {            int temp=A[par];            A[par]=A[next];            A[next]=temp;            next=par;        }        else break;    }}void BUILD_MAX_HEAP(int A[],int heap_size){    if(heap_size<2)    {        if(heap_size==1) return;        else cout<<"heapsize wrong"<<endl;    }    for(int i=2;i<heap_size+1;i++)    {        MAX_HEAP_INSERT(A,i);    }}int main(int argc, char *argv[]){    int n;    cin>>n;    int test[n+1];    for(int i=1;i<n+1;i++) cin>>test[i];    BUILD_MAX_HEAP(test,n);    for(int i=1;i<n+1;i++) cout<<test[i]<<" ";    cout<<endl;    cout << "Hello World!" << endl;    return 0;}
原创粉丝点击