Поскольку pq [N] является последним элементом в pq [], и он заменяется на элемент в pq [i] (который должен быть удален), это не означает, что значение в pq[i] после того, как своп больше или равен pq [i] до свопа?
Нет, это не обязательно так.Единственное требование для правильной кучи - это то, что ребенок не может быть больше, чем его родитель.Хотя это означает, что элемент в первой позиции является наименьшим, это означает, что не означает, что элемент в последней позиции является самым большим.Рассмотрим следующую кучу:
1
10 2
15 18 5 3
16 17 19 20 7 8 6 4
pq[N]
- это 4
, и все же в этой куче много элементов, которые больше ее.Предположим, мы хотели удалить 15
, заменив его на 4
.4
меньше, чем 10
, поэтому его нужно будет перемещать вверх по дереву (используя swim
).