Heapify
Max Heapify :
void maxHeapify(int h[], int index, int size) {
// Set largest as parent and set children
int left = 2 * index;
int right = 2 * index + 1;
int largest = index;
// If left child is greater, make largest point to it
if (left <= size && h[left] > h[largest])
largest = left;
// If right child is greater, make largest point to it
if (right <= size && h[right] > h[largest])
largest = right;
// If largest is not parent, swap it with passed index
if (largest != index) {
int temp = h[index];
h[index] = h[largest];
h[largest] = temp;
maxHeapify(h, largest, size);
}
return;
}Min Heapify :
Note: To build a max heap or min heap, run the function n/2 times . Like this :
Last updated
Was this helpful?