Кучи используются в качестве структуры данных для очереди с приоритетами, на самом деле фундаментальной для минимальной кучи является то, что у вас самый низкий приоритет сверху (или в максимальной куче - более высокий приоритет сверху). Поэтому вы всегда можете извлечь самый низкий или самый высокий элемент без поиска.
Вы всегда можете вставить новый элемент во время сортировки, попробуйте посмотреть, как работает heapSort. Каждый раз, когда вам нужно построить свою кучу, а затем извлечь максимальное значение и поместить его в конец массива, после уменьшения значения heap.length от 1.
Если вы уже отсортировали некоторые числа: [..., 13, 15, 16]
и вставили новое число, которое выше последнего извлеченного элемента (13 = 0-й элемент), вы получите неправильное решение, поскольку вы извлечете новое число, но вы не поставит его в нужное место: [1, 2, 5, 7, 14, 13, 15, 16]
. Он будет помещен перед 13, потому что он поменяет элемент в позиции heap.length.
Это, очевидно, неправильно, поэтому вы можете вставлять только те элементы, которые меньше 0-го элемента.