[PYTHON] Sortierung einfügen

Heute starten [EINFÜHRUNG IN ALGORITHMEN](https://www.amazon.co.jp/Introduction-Algorithms-Thomas-H-Cormen/dp/8120340078/ref=sr_1_2?__mk_ja_JP=Katakana & keywords = Einführung + in + Algorithmus & qid = 15810 Seit ich mit dem Lesen von -2) angefangen habe, gibt es viele einfache Inhalte, aber ich werde den Algorithmus zusammenfassen.

Sortierung einfügen

Das Sortieren eines Arrays mit 10 Elementen nach Einfügesortierung ähnelt dem folgenden Beispiel.

Es liegen 10 Spielkarten auf dem Tisch und die Anzahl der Karten auf Ihrer Hand beträgt zu Beginn 0. Ich ziehe nacheinander Karten vom Tisch und füge sie meiner Hand hinzu, aber ich halte meine Hand immer in aufsteigender Reihenfolge sortiert. Sie möchten Ihre Hand sauber halten, wie eine Karte mit einer kleinen Nummer links und eine Karte mit einer großen Nummer rechts. Der Punkt dieses Prozesses ist, dass ** Karten in drei Typen ** klassifiziert werden können.

Die Sortierung einfügen beachtet dies ebenfalls.

Zum Beispiel

Index 0 1 2 3 4 5 6 7 8 9
Wert 5 3 8 1 2 4 7 6 9 0

Angenommen, Sie haben ein Array mit 10 Elementen. Stellen Sie sich vor, alle Karten liegen noch auf dem Tisch. Angenommen, Sie ziehen jeweils eine Karte und ziehen nur die fünfte. Dies entspricht der Tatsache, dass das Array auf Index 0-3 sortiert wurde und sich nun auf Index 4-2 konzentriert.

Index 0 1 2 3 4 5 6 7 8 9
Wert 1 3 5 8 2 4 7 6 9 0

Lassen Sie uns nun die Position finden, an der diese 2 eingefügt werden soll.

――Vergleichen Sie 2 und 8, 8 ist größer, ersetzen Sie also die Positionen 2 und 8. ――Vergleicht man 2 und 5, ist 5 größer, also tauschen Sie die Positionen 2 und 5 aus. ――Vergleicht man 2 und 3, ist 3 größer, ersetzen Sie also die Positionen 2 und 3. ――Vergleich von 2 und 1 ist 2 größer und endet hier.

Machen Sie dasselbe für die 6. bis 10. Karte, um ein sortiertes Array zu erhalten. Dies ist das Sortierverfahren für Einfügungen.

def insertion_sort(a) -> None:
    for i in range(1, len(a)):
        key = a[i]
        j = i - 1
        while key < a[j] and j >= 0:
            a[j+1] = a[j] 
            j -= 1
        a[j+1] = key

a = [1, 3, 5, 8, 2, 4, 7, 6, 9, 0]
insertion_sort(a)
print(a)

Ausgabe

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

Der Text, den ich zu Beginn eingeführt habe, erklärt verschiedene Dinge über einen Algorithmus, z. B. warum Sie Seiten mit Einfügesortierung so stark unterteilen können, dass ich einen weiteren Artikel schreiben werde, wenn es etwas zu lesen und zu ergänzen gibt. ..

Recommended Posts

Sortierung einfügen
Sortierimplementierung einfügen
Visualisieren Sie die Einfügesortierung
Sortieren
Fügen Sie eine Art von AOJ-Übungen ein
SelectionSort
[Python] Sortieren
Natürliche Sorte
Python #sort
Blasensorte
Blasensorte
Zusammenführungssortierung erklärt
Praktische Schlafsorte
Nach Pandas sortieren
Blasensortierung, Sortierung auswählen, Sortierung einfügen, Shell sortieren, Sortierung zusammenführen, schnelle Sortierung, Sortierung zählen (Python)