Insertion Sort Python?

1 Antwort

Was mir zunächst aufgefallen ist:

Entgegen dem Kommentar wird hier nicht vertauscht, sondern verschoben, und am Ende das "neue" Element an der richtigen Stelle eingesetzt.

Wieso werden das Einsortieren des neuen Elements und noch mehr die Ausgabe des Zwischenzustandes nicht in eigene Prozeduren ausgelagert?

Führt

        tmp = arr[key]

nicht zu einem Out-of-Range im letzten Schleifendurchlauf?

(ich würde border von 1 an laufen lassen, aber das ist wohl Geschmackssache. Außer, dass sich dann der Kommentar

# wir beginnen an der Stelle 1 statt an der Stelle 0, weil ein einelementiges Array immer bereits sortiert ist und wir uns einen Schleifendurchlauf sparen können.

leichter zuordnen lässt.)

"# demo" würde ich durch "# Ausgabe des aktuellen Zustands" bzw. "# Ende Ausgabe ..." ersetzen.

"key = border + 1" - die Bedeutung von key gehört an diese Stelle (steht zu weit oben), außerdem sollte hier stehen, wieso diese Variable gerade auf diesen Wert gesetzt wird

        # Aufbau der Ausgabe
        line = ""   # Startwert der Ausgabe
        for k ...   # Schleife über alle Array-Elemente
            ... # Anhängen des aktuellen Array-Elements an die Ausgabe
            ... # sind wir an der Grenze?
                ... # falls ja, die Grenzmarkierung an die Ausgabe anhängen

später:

            arr[key] = arr[key-1] # irgendwas mit Verschiebung, und wie das mit "Insertion" von "Insertion Sort" zusammenhängt
            key -= 1 # Begründung, warum wir jetzt das vorangehende Element zum Vergleich heranziehen  

und

arr_sorted = ... # Liste sortieren und in Variable ...
Woher ich das weiß:Berufserfahrung – Software-Entwickler