Изменения

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

Биномиальная куча

778 байт добавлено, 00:05, 14 марта 2011
Нет описания правки
</code>
Приведенная далее процедура сливает биномиальные кучи <tex>H_1 и , H_2</tex>, возвращая получаемую в результате биномиальную прирамиду. <tex>H_1 и , H_2</tex> удаляются. Процедура Binomial_Heap_Merge сливает списки корней <tex>H_1 и , H_2</tex> в единый связный список, отсортированный по степеням в монотонно возрастающем порядке. <code> Binomial_Heap_Union(<tex>H_1, H_2</tex>) H = Make_Binomial_Heap() head[H] = Binomial_Heap_Merge(<tex>H_1, H_2</tex>) delete <tex>H_1, H_2</tex> //удаление объектов, но не списков, на которые они указывают if head[H] = NIL then return H prex_x = NIL x = head[H] next_x = sibling[x] while next_x <tex>\ne</tex> NIL do if (degree[x] <tex>\ne</tex> degree[next_x]) or (sibling[next_x] <tex>\ne</tex> NIL and degree[sibling[next_x]] = degree[x]) then prex_x = x else if key[x] <= key[next_x] then sibling[x] = sibling[next_x] Binomial_Link(next_x, x) else if prev_x = NIL then head[H] = next_x else sibling[prev_x] = next_x</code>
Анонимный участник

Навигация