Изменения

Перейти к: навигация, поиск

Двоичная куча

38 байт добавлено, 01:42, 2 августа 2020
Извлечение минимального элемента: форматирование
'''Двоичная куча''' или '''пирамида''' (англ. ''Binary heap'') — такое двоичное [[Дерево, эквивалентные определения|подвешенное дерево]], для которого выполнены следующие три условия:
* Значение в любой вершине не меньше больше (если куча для максимумаминимума), чем значения её потомков.
* На <tex>i</tex>-ом слое <tex>2^i</tex> вершин, кроме последнего. Слои нумеруются с нуля.
* Последний слой заполнен слева направо (как показано на рисунке)
# Сохранённый элемент возвращается.
<code style="display:inline-block">
'''int''' extractMin():
'''int''' min = a[0]
siftDown(0)
'''return''' min
</code>
===Добавление нового элемента===
{{Лемма
|statement= На выходе получим искомую кучу.
|proof= При вызове До вызова <tex> \mathrm {siftDown} </tex> для вершины, ее поддеревья являются кучами. После выполнения <tex> \mathrm {siftDown} </tex> эта вершина с ее поддеревьями будут также являться кучей. Значит, после выполнения всех <tex> \mathrm {siftDown} </tex> получится куча.
}}
{{Лемма
</code>
===Поиск k-ого элемента(очень коряво расписано с неверными индексами)===
Требуется найти <tex>k</tex>-ый по величине элемент в куче.
Анонимный участник

Навигация