#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 = 10;
int arr[] = {4, 10, 3, 5, 1, 7, 8, 9, 6, 2};
printf("原始数组:\n");
printArray(arr, n);
buildHeap(arr, n);
printf("构建堆后的数组:\n");
printArray(arr, n);
return 0;
}