#include<bits/stdc++.h>usingnamespace std;#define MAX 20000int H,A[MAX+1];voidmaxHeapify(int i){int l,r,largest;
l =2*i;
r =2*i+1;if(l<=H&&A[l]>A[i]) largest = l;else largest = i;if(r<=H&&A[r]>A[largest]) largest = r;if(largest!=i){swap(A[i],A[largest]);maxHeapify(largest);}}voidbuildHeap(){for(int i=H/2;i>=1;i--){maxHeapify(i);}}intmain(){
cin>>H;for(int i=1;i<=H;i++) cin>>A[i];buildHeap();for(int i=1;i<=H;i++){
cout<<" "<<A[i];}
cout<<endl;system("pause");return0;}
目录:自己敲一遍就好了自己敲一遍就好了#include<bits/stdc++.h>using namespace std;#define MAX 20000int H,A[MAX+1];void maxHeapify(int i){ int l,r,largest; l = 2*i; r = 2*i+1; if(l<=H&&A[l]>A[i]) largest = l; else largest = i;