Вопрос

Каков официальный способ заглянуть в кучу python, созданную библиотеками heapq?Прямо сейчас у меня есть

def heappeak(heap):
  smallest = heappop(heap)
  heappush(heap, smallest)
  return smallest

что, возможно, не очень приятно.Могу ли я всегда предполагать, что heap[0] является вершиной кучи и использует это?Или это предполагало бы слишком большую часть базовой реализации?

Это было полезно?

Решение

Да, вы можете сделать это предположение, потому что оно изложено в Документация:

Кучи - это массивы , для которых heap[k] <= heap[2*k+1] и heap[k] <= heap[2*k+2] для всех k, считая элементы с нуля.Ради сравнения, несуществующие элементы считаются бесконечными. интересное свойство кучи заключается в том, что heap[0] всегда является его наименьшим элементом.

(И это, вероятно, причина, по которой нет peek функция:в этом нет никакой необходимости.)

Другие советы

Если вы используете Python 2.4 или новее, вы также можете использовать heapq.nsmallest().

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top