#include <stdio.h>
#include <stdlib.h>
void heapifyUp(int arr[], int n, int i) {
int parent = (i-1) / 2;
if (parent >= 0 && arr[parent] < arr[i]) {
int temp = arr[parent];
arr[parent] = arr[i];
arr[i] = temp;
heapifyUp(arr, n, parent);
}
}
void buildHeap(int arr[], int n) {
for (int i = 1; i < n; i++) {
heapifyUp(arr, n, i);
}
}
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
}
int main() {
int n = 6;
int arr[] = {2,9,7,6,5,8};
printf("原始数组:\n");
printArray(arr, n);
buildHeap(arr, n);
printf("构建堆后的数组:\n");
printArray(arr, n);
return 0;
}