[GO] Python Priority Queue Das Geheimnis des Ergebnisses der Heapify-Funktion, an dem die meisten Menschen nicht interessiert wären

Einführung

Ich habe den mysteriösen Teil des Verhaltens der Prioritätswarteschlange in Python untersucht.

Geheimnisvolles Verhalten

Hier , als ich die Prioritätswarteschlange in Python überprüfte, war es möglich, sie mit der Heapq-Bibliothek zu realisieren. .. Im obigen Link wird das Folgende als Beispiel für die Verwendung von heapq beschrieben.

#Quelle: https://qiita.com/ell/items/fe52a9eb9499b7060ed6
import heapq  #Import der Heapq-Bibliothek

a = [1, 6, 8, 0, -1]
heapq.heapify(a)  #Liste zur Prioritätswarteschlange
print(a)
#Ausgabe: [-1, 0, 8, 1, 6](Prioritätswarteschlange a)

Warum erfolgt die Ausgabe in dieser Reihenfolge ([-1, 0, 8, 1, 6])? Es stellte sich eine Frage, an der niemand interessiert zu sein schien (weil ich aufsteigende Reihenfolge erwartete).

Grund: Weil die Elemente der Liste nach dem Heap-Warteschlangenalgorithmus sortiert sind

In Python scheinen Prioritätswarteschlangen durch eine Liste dargestellt zu werden. Gemäß dem Python-Dokument wird der Inhalt der Liste nach dem Heap-Warteschlangenalgorithmus sortiert. Ding.

Hier Auf der Heap-Erklärungsseite finden Sie eine detaillierte Erklärung des Heap-Algorithmus. , Die Baumstruktur kann durch eine Liste dargestellt werden (vorausgesetzt, der Listenindex des übergeordneten Knotens ist i, der linke Knoten des untergeordneten Knotens ist 2 * i und der rechte Knoten ist 2 * i + 1). Die obige Ausgabe wurde erhalten, indem die Elemente in der Liste ausgetauscht wurden, sodass die Eltern-Kind-Beziehung hergestellt wurde.

Sortieren Sie den Fluss nach dem Heap-Warteschlangenalgorithmus

Heap-Bedingung: Jeder Knoten ist kleiner oder gleich seinen untergeordneten Knoten Anfangssequenz: [1, 6, 8, 0, -1]

heapq.png

Recommended Posts

Python Priority Queue Das Geheimnis des Ergebnisses der Heapify-Funktion, an dem die meisten Menschen nicht interessiert wären
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
Das Ergebnis der Installation von Python auf Anaconda
Holen Sie sich den Aufrufer einer Funktion in Python
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Lassen Sie uns das Ausführungsergebnis des Programms mit C ++, Java, Python messen.
[Memo] Das Geheimnis kumulativer Zuweisungsanweisungen in Python-Funktionen
Das Ergebnis des maschinellen Lernens von Java-Ingenieuren mit Python www
Python3-Verarbeitung, die in Paiza verwendbar zu sein scheint
Lassen Sie das Gleichungsdiagramm der linearen Funktion in Python zeichnen
[Python] Lassen Sie uns die Anzahl der Elemente im Ergebnis bei der Operation des Sets reduzieren
Versuchen Sie, die stochastische Massenfunktion der Binomialverteilung in Python zu transkribieren
[Python] Ein Programm, das die Anzahl der gepaarten Socken berechnet
Ich möchte das Ergebnis von "Zeichenfolge" .split () in Python stapelweise konvertieren
Die eval () -Funktion, die eine Zeichenfolge als Ausdruck in Python berechnet
[Python] Hinweis: Selbst erstellte Funktion zum Ermitteln des Bereichs der Normalverteilung
Überprüfen Sie das Verhalten des Zerstörers in Python
Nehmen Sie die logische Summe von List in Python (Zip-Funktion)
[Python3] Schreiben Sie das Codeobjekt der Funktion neu
Grundlagen zum Ausführen von NoxPlayer in Python
Auf der Suche nach dem schnellsten FizzBuzz in Python
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
Sie werden in 100 Tagen Ingenieur - 29. Tag - Python - Grundlagen der Python-Sprache 5
Sie werden in 100 Tagen Ingenieur - Tag 33 - Python - Grundlagen der Python-Sprache 8
Sie werden in 100 Tagen Ingenieur - 26. Tag - Python - Grundlagen der Python-Sprache 3
Ich möchte eine Prioritätswarteschlange erstellen, die mit Python (2.7) aktualisiert werden kann.
Legen Sie die Obergrenze für die Anzahl der Wiederholungen rekursiver Funktionen in Python fest
So ermitteln Sie den Koeffizienten der ungefähren Kurve, die in Python durch die Scheitelpunkte verläuft
Sie werden in 100 Tagen Ingenieur - Tag 32 - Python - Grundlagen der Python-Sprache 7
Entsprechung des Ereignisses, dass das Ergebnis von form.is_valid () im Django2-System immer falsch ist
Sie werden in 100 Tagen Ingenieur - 28. Tag - Python - Grundlagen der Python-Sprache 4
[Python] Ich habe eine Praxis untersucht, die durch asynchrone Verarbeitung (Multiprocessing, Asyncio) parallel zum Hauptthread ausgeführt werden kann.