Insertion Sort Python?
Guten Abend,
Wir haben die Aufgabe bekommen jede Zeile des Codes (Bild) zu kommentieren. Es geht um Insertion Sort. Einige habe ich schon gemacht, bzw. es versucht.
Könnte mir jemand vielleicht die Erklärung zu denen sagen, die ich noch nicht habe oder mich ggf verbessern?
Lg und vielen Dank schonmal!
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 ...