Data Structures
Data Structures
h>
#include <stdlib.h>
typedef struct {
int heap[MAX_HEAP_SIZE];
int size;
} MaxHeap;
*a = *b;
*b = temp;
// Reheap up
swap(&heap->heap[index], &heap->heap[parent]);
index = parent;
parent = (index - 1) / 2;
// Reheap down
void reheap_down(MaxHeap *heap, int index) {
right_child = left_child + 1;
larger_child = left_child;
larger_child = right_child;
break;
swap(&heap->heap[index], &heap->heap[larger_child]);
index = larger_child;
heap->size = n;
heap->heap[i] = arr[i];
reheap_down(heap, i);
printf("Heap overflow!\n");
return;
heap->heap[heap->size++] = value;
if (heap->size == 0) {
printf("Heap underflow!\n");
heap->heap[0] = heap->heap[--heap->size];
reheap_down(heap, 0);
return max_value;
// Heapsort
MaxHeap heap;
swap(&heap.heap[0], &heap.heap[i]);
heap.size--;
reheap_down(&heap, 0);
printf("\n");
int main() {
print_array(arr, n);
// Heapsort
heapsort(arr, n);
print_array(arr, n);
return 0;
}