Изменения

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

Фибоначчиева куча

11 байт добавлено, 00:52, 10 марта 2012
consolidate
Для этого возьмем массив списков указателей на корни деревьев <tex> A[0..D[H]] </tex>, где <tex> D[H] </tex> {{---}} максимальная степень вершины в текущем корневом списке.
Затем происходит [[Биномиальная_куча#Union merge | процесс, аналогичный слиянию биномиальных куч]]: добавляем поочередно каждый корень, смотря на его степень. Пусть она равна <tex> d </tex>. Если в соответствующей ячейке <tex>A </tex> еще нету вершины, записываем текущую вершину туда. Иначе подвешиваем одно дерево к другому, и пытаемся также добавить дерево, степень корня которого уже равна <tex> d + 1 </tex>. Продолжаем, пока не найдем свободную ячейку.
Учетная стоимость <tex> consolidate </tex> равна <tex> O(D(n)) </tex>. Докажем это:
403
правки

Навигация