Подглядывание в куче в python
Каков официальный способ заглянуть в кучу python, созданную библиотеками heapq? Прямо сейчас у меня
def heappeak(heap):
smallest = heappop(heap)
heappush(heap, smallest)
return smallest
который, возможно, не очень приятный. Могу ли я всегда считать, что heap[0]
является вершиной кучи и использует это? Или это будет слишком много из основной реализации?
Ответы
Ответ 1
Да, вы можете сделать это предположение, потому что оно указано в документации:
Кучи - это массивы, для которых heap[k] <= heap[2*k+1]
и heap[k] <=
heap[2*k+2]
для всех k, считая элементов из нуля. Во имя сравнение, несуществующие элементы считается бесконечным. The интересным свойством кучи является то, что heap[0]
всегда самый маленький элемент.
(И, вероятно, причина в том, что нет функции peek
: в этом нет необходимости.)
Ответ 2
Если вы используете Python 2.4 или новее, вы также можете использовать heapq.nsmallest().