#include <stdio.h>
int main () {
int a[9] = {-1,53,17,78,9,45,65,87,32};
Heapsort(a,9);
print_arr(a,9);
return 0;
}
void print_arr(int a[], int n){
for(int i = 1 ; i < n ; i++){
printf("%d ",a[i]);
}
printf("\n");
}
void Simpleselect(int a[] , int n){
int min;
for(int i = 0 ; i < n ; i++){
min = i;
for(int j = i+1 ; j < n ; j++){
if(a[j] < a[min]) min = j;
}
if(min != i){
int temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
}
void HeadAdjust(int a[],int k , int len ){
a[0] = a[k];
for(int i = 2*k ; i < len ; i*=2){
if(i < len-1 && a[i] < a[i+1]) i++;
if(a[0] >= a[i]) break;
else {
a[k] = a[i];
k = i;
}
}
a[k] = a[0];
return ;
}
void Heapsort(int a[],int n){
for(int i = n/2 ; i > 0 ; i--){
HeadAdjust(a,i,n);
}
for(int i = n-1 ; i > 1 ; i--){
a[0] = a[i];
a[i] = a[1];
a[1] = a[0];
HeadAdjust(a,1,i);
}
return ;
}