swap(p + l, p + location - 1);
}
}
else {
//将location与左右孩子节点做最大堆排序
if(p[l] > p[r]){
if(p[l] > p[location - 1]){
swap(p + l, p + location - 1);
}
}
else{
if(p[r] > p[location - 1]){
swap(p + r, p + location - 1);
}
}
}
}
int main(){
int count;
int i;
int *ptr;
printf("input count:");
scanf("%d", &count);
ptr = (int *) malloc(count * sizeof(int));
memset(ptr, 0, count);
for(i = 0; i < count; i++)
scanf("%d", ptr+i);
printf("\n");
for(i = 0; i < count; i++){
max_heap(ptr + i, 1, count - i);
printf("%d ", ptr[i]);
}
printf("\n");
return 0;
}