#include <iostream>
using namespace std;
void print(int *arr,int n)
{
for(int i=0;i<10;i++)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}
void shiftDown(int *arr,int n,int k)
{
while(2*k+1<n)
{
int j=2*k+1;
if(j+1<n && arr[j+1]>arr[j])
{
j+=1;
}
if(arr[k]>arr[j])
break;
swap(arr[k],arr[j]);
k=j;
}
}
void heapify(int *arr,int n)
{
for(int i=(n-1)/2;i>=0;i--)
{
shiftDown(arr,n,i);
}
}
void heapSort(int *arr,int n)
{
for(int i=n-1;i>0;i--)
{
swap(arr[0],arr[i]);
shiftDown(arr, i, 0);
}
}
int main()
{
int arr[] {9,6,4,2,12,7,3,1,5,8};
heapify(arr, 10);
heapSort(arr, 10);
print(arr,10);
return 0;
}