#include<stdio.h>
void shift(int arr[],int n,int i)
{
int j=2*i+1;
int temp=arr[i];
while(j<n)
{
if(j+1<n&&arr[j]<arr[j+1])
++j;
if(arr[j]<temp)
break;
arr[i]=arr[j];
i=j;
j=2*i+1;
}
arr[i]=temp;
}
void max(int arr[],int n)
{
int i;
for(i=(n>>1)-1;i>=0;i--)
shift(arr,n,i);
}
int main()
{
int arr[]={111,2,3,43,12};
max(arr,5);
printf("%d\n",arr[0]);
getch();
return 0;
}
void shift(int arr[],int n,int i)
{
int j=2*i+1;
int temp=arr[i];
while(j<n)
{
if(j+1<n&&arr[j]<arr[j+1])
++j;
if(arr[j]<temp)
break;
arr[i]=arr[j];
i=j;
j=2*i+1;
}
arr[i]=temp;
}
void max(int arr[],int n)
{
int i;
for(i=(n>>1)-1;i>=0;i--)
shift(arr,n,i);
}
int main()
{
int arr[]={111,2,3,43,12};
max(arr,5);
printf("%d\n",arr[0]);
getch();
return 0;
}