#include <stdio.h>
#include <stdlib.h>
void imprimir_vetor(int v[], int n){
int i;
for (i=1;i<=n;i++){
printf("[%d]->",v[i]);
}
printf("\n");
}
void corrigir_descendo(int v[],int n,int i){
int f, j = i;
while (2*j <=n){
f = 2*j;
if(f<n&&(v[f]>v[f+1])){
f++;
}
if (v[j]<=v[f]){
j = n;
}
else {
int aux = v[j];
v[j] = v[f];
v[f] = aux;
j = f;
}
}
}
void constroi_max_heap(int v[],int n){
int i;
for (i=n/2;i>=1;i--){
corrigir_descendo(v,n,i);
imprimir_vetor(v,n);
}
}
int main(void) {
int i, v[13] = { 0,1,3,1,8,2,3,5,10,-1,100,60,30 };
printf("\nHeapify\n");
constroi_max_heap(v,12);
imprimir_vetor(v,12);
return 0;
}