#include <iostream>
#include <algorithm>
#include <stdlib.h>
using namespace std;
int cmp1(int a,int b)
{
return a-b;
}
void heapfig(int *a,int pos,int end,int n)
{
int first,largest,max;
first=2*pos+1;
largest=2*pos+2;
if(first<end&&cmp1(a[first],a[pos])>0)
{
max=first;
}
else
{
max=pos;
}
if(largest<end&&cmp1(a[largest],a[max])>0)
{
max=largest;
}
if(max!=pos)
{
int temp=a[max];
a[max]=a[pos];
a[pos]=temp;
heapfig(a,max,end,n);
}
}
void buidheap(int *a,int n)
{
int i;
for(i=n/2-1;i>=0;i--)
{
heapfig(a,i,n,n);
}
}
void sortheap(int *a,int n)
{
buidheap(a,n);
for(int i=n-1;i>=0;i--)
{
int temp=a[0];
a[0]=a[i];
a[i]=temp;
heapfig(a,0,i,n);
}
}
int main()
{
int num[]={2,1,3,6,5,9};
//qsort(num,6,sizeof(num[0]),cmp);
sortheap(num,6);
for(int i=0;i<6;i++)
cout<<num[i]<<" ";
cout<<endl;
return 0;
}