Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- https://onlinegdb.com/7D0KCj-Un
- #include <stdio.h>
- #include <stdlib.h>
- void maxHeapify(int arr[], int n, int i) {
- int largest = i, left = 2 * i + 1, right = 2 * i + 2;
- if (left < n && arr[left] > arr[largest]) largest = left;
- if (right < n && arr[right] > arr[largest]) largest = right;
- if (largest != i) {
- int temp = arr[i]; arr[i] = arr[largest]; arr[largest] = temp;
- maxHeapify(arr, n, largest);
- }
- }
- void buildMaxHeap(int arr[], int n) {
- for (int i = n / 2 - 1; i >= 0; i--) maxHeapify(arr, n, i);
- }
- int main() {
- int n;
- printf("Enter number of elements: ");
- scanf("%d", &n);
- int *arr = malloc(n * sizeof(int));
- printf("Enter elements: ");
- for (int i = 0; i < n; i++) scanf("%d", &arr[i]);
- buildMaxHeap(arr, n);
- printf("Max-heap: ");
- for (int i = 0; i < n; i++) printf("%d ", arr[i]);
- free(arr);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement