Frage

Was ist der offizielle Weg in einem Python Haufen spähen, wie durch die heapq Libs erstellt? Im Moment habe ich

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

das wohl ist, nicht sehr schön. Kann ich davon ausgehen, dass immer heap[0] die Spitze des Haufens ist und Verwendung das? Oder würde die davon ausgehen, zu viel von der zugrunde liegenden Implementierung?

War es hilfreich?

Lösung

Ja, man kann diese Annahme machen, weil es in der Dokumentation angegeben :

  

Heaps sind Arrays, für die heap[k] <= heap[2*k+1] und heap[k] <= heap[2*k+2] für alle k , Zählen   Elemente von Null. Um ... Willen   Vergleich, nicht vorhandene Elemente sind   als unendlich sein. Die   interessante Eigenschaft eines Haufens ist, dass   heap[0] ist immer sein kleinstes   Element.

(und das ist wahrscheinlich der Grund, warum gibt es keine peek Funktion. Gibt es keine Notwendigkeit für sie)

Andere Tipps

Wenn Sie mit Python 2.4 oder neuer können Sie auch heapq.nsmallest () verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top