#include <iostream>
void swap(int tree[],int n,int t)
{
int temp;
temp=tree[n];
tree[n]=tree[t];
tree[t]=temp;
}
void build_heap(int tree[],int n){
for(int i=n/2-1;i>=0;i--)
{
if((2*i+1)<n)
{
if(tree[i]<tree[2*i+1] )
{ swap(tree,i,2*i+1);}
}
if((2*i+2)<n)
{
if(tree[i]<tree[2*i+2])
{swap(tree,i,2*i+2);}
}
}
}
void build_sort(int tree[],int n){
build_heap(tree,n);
for(int i=n-1;i>=0;i--)
{
std::cout<<tree[0]<<"------"<<std::endl;
swap(tree,i,0);
build_heap(tree,i);
}
}
int main( )
{
int tree[]={11,10,9,12,13,1,2,6,8,4,5,3};
int n=sizeof(tree)/sizeof(*tree);
build_sort(tree,n);
for(int i=0;i<n;i++)
{
std::cout<<tree[i]<<"-"<<std::endl;
}
}