#include<iostream>
#include<algorithm>
#include<ctime>
#include<cstdlib>
using namespace std;
void maxHeap(int *a,int n,int i){
int left=i<<1,right=i<<1|1;
if(left > n) return;
int large=left;
if(right <= n && a[right] > a[large]) large=right;
if(a[i] < a[large]) swap(a[i],a[large]);
maxHeap(a,n,large);
}
void makeHeap(int * a,int n){
int i;
for(i=n/2;i>=1;i--){
maxHeap(a,n,i);
}
}
void sortHeap(int * a,int n){
int i;
for(i=n;i>=2;i--){
swap(a[i],a[1]);
maxHeap(a,i-1,1);
}
}
int main(){
srand(time(NULL));
int i,a[11];
for(i=1;i<=10;i++){
a[i]=rand()%20;
}
makeHeap(a,10);
sortHeap(a,10);
for(i=1;i<=10;i++){
cout<<a[i]<<' ';
}
cout<<endl;
////////////////////
for(i=1;i<=10;i++){
a[i]=rand()%20;
}
make_heap(a+1,a+11);
sort_heap(a+1,a+11);
for(i=1;i<=10;i++){
cout<<a[i]<<' ';
}
cout<<endl;
return 0;
}