Изменения

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

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

261 байт добавлено, 22:42, 15 июня 2014
merge
<code>
'''Node ''' merge('''binomialHeap''' H1, H2) '''if ''' H1 == null '''return ''' H2 '''if ''' H2 == null '''return ''' H1 H.head = null <font color = "green"> // H - результат слияния</font> curH = H.head <font color = null "green"> // Слияние слияние корневых списков curH = H.head</font>
curH1 = H1.head
curH2 = H2.head
'''while ''' curH1 != null && curH2 != null '''if ''' curH1.degree < curH2.degree curH.sibling = curH1 curH = curH1 curH1 = curH1.sibling '''else ''' curH.sibling = curH2 curH = curH2 curH2 = curH2.sibling '''if ''' curH1 == null '''while ''' curH2 != null curH.sibling = curH2 curH2 = curH2.sibling '''else ''' '''while ''' curH1 != null curH.sibling = curH1 curH1 = curH1.sibling } curH = H.head <font color = "green"> // объединение деревьев одной степени</font> curH = H.head '''while ''' curH.sibling != null '''if ''' curH.degree == curH.sibling.degree p[curH] = curH.sibling tmp = curH.sibling curH.sibling = curH.sibling.child curH = tmp '''continue''' curH = curH.sibling
return H
</code>
333
правки

Навигация