min heap
heapify(arr, n, i) { int smallest = i; int l = 2 * i + 1; int r = 2 * i + 2;
if (l < n && arr[l] < arr[smallest]) smallest = l;
if (r < n && arr[r] < arr[smallest]) smallest = r;
if (smallest != i) { swap(arr[i], arr[smallest]); heapify(arr, n, smallest); } }
buildMinHeap(arr, n) { for (int i = (n / 2) - 1; i >= 0; i--) heapify(arr, n, i); }