Maximum Heap Aizu - ALDS1_9_B
https://vjudge.net/problem/Aizu-ALDS1_9_B
1 #include<iostream> 2 using namespace std; 3 const int MAX=2000000; 4 int H,A[MAX+1]; 5 6 void maxHeapify(int i) 7 { 8 int l,r,largest; 9 l=2*i; 10 r=2*i+1; 11 12 //从左子结点,自身,右子节点中选出最大的点 13 if(l<=H &&A[l]>A[i]) largest=l; 14 else largest = i; 15 if(r<=H&&A[r]>A[largest]) largest =r; 16 17 if(largest !=i) 18 { 19 swap(A[i],A[largest]); 20 maxHeapify(largest); 21 } 22 } 23 int main() 24 { 25 cin>>H; 26 for(int i=1; i<=H; i++) cin>>A[i]; 27 28 for(int i=H/2; i>=1; i--) maxHeapify(i); 29 30 for(int i=1; i<=H; i++) 31 { 32 cout<<" "<<A[i]; 33 } 34 cout<<endl; 35 return 0; 36 }

浙公网安备 33010602011771号