Изменения

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

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

19 байт добавлено, 23:41, 15 июня 2014
Восстановление свойств кучи
<code>
'''function''' siftDown(i : '''int'''):
'''while''' 2 * i + 1 <= A.heapSize <font color = "green">// <tex>heapSize</tex> {{---}} количество элементов в куче</font>
left = A[2 * i + 1] <font color = "green">// left {{---}} левый сын</font>
'''if''' 2 * i + 2 <= A.heapSize '''and''' A[2 * i + 2] <= left '''and''' A[2 * i + 2] < A[i] <font color = "green">// A[2 * i + 2] {{---}} правый сын</font>
swap(A[2 * i + 2], A[i])
i = 2 * i + 2
<code>
'''function''' siftUp(i : '''int'''):
'''while''' A[i] < A[(i - 1) / 2] '''and''' i != 0 <font color = "green">// i == 0 {{---}} мы в корне</font> swap(A[i], A[(i - 1) / 2]) i = (i - 1) /= 2
</code>
333
правки

Навигация