Die Webseiten der Fachschaft Informatik am ERG Saalfeld
Insertion-Sort
Insertion-Sort ist "in-place" und die Anzahl der Elemente bleibt erhalten.
Beispiel:
Das unsortierte Feld: |
2 5 9 8 1 5 2 4 |
Wir suchen in dem Feld das größte Element.
Das größte Element wird aus der aktuellen Liste herausgenommen und als letztes Element in der aktuellen Liste eingefügt. |
2 5 8 1 5 2 4 9 |
Da das größte Element an der letzten Stelle steht, betrachten wird dieses Element nicht mehr. Die nun betrachtete aktuelle Liste ist um ein Element kleiner.
Das größte Element wird aus der aktuellen Liste herausgenommen und als letztes Element in der aktuellen Liste eingefügt. |
2 5 1 5 2 4 8 9 |
Die beiden größten Elemente stehen an der richtigen Stelle. Das zu betrachtende Feld = aktuelles Feld wird wieder um ein Element kleiner.
Das größte Element wird aus der aktuellen Liste herausgenommen und als letztes Element in der aktuellen Liste eingefügt. |
2 1 5 2 4 5 8 9 |
usw.
Hier wird nicht verschoben, weil das größte Element an der letzten Stelle im aktuellen Feld steht. |
2 1 2 4 5 5 8 9 |
Hier wird nicht verschoben, weil das größte Element an der letzten Stelle im aktuellen Feld steht. |
2 1 2 4 5 5 8 9 |
fertig
Das Programm zum Sortieren mit Insertion-Sort sieht so aus:
Programm
from random import randint
#Wir erstellen/würfeln ein Feld
feld = []
for a in range(100):
feld.append(randint(200,500))
#Ausgabe des unsortierten Felds
for element in feld:
print(element,end = ' ')
print('\n')
anzahl = len(feld)
feldende = anzahl
for j in range(anzahl):
#initialisieren für einen Durchlauf
maximum = -100
stelle = -1
feldende = feldende - 1
#wir suchen in dem Feld die groesste Zahl
for i in range(feldende+1):
if feld[i]>maximum:
maximum = feld[i]
stelle = i
del feld[stelle]
feld.insert(feldende,maximum)
#Ausgabe des sortierten Felds
for element in feld:
print(element, end = ' ')
Der Aufruf sah bei mir so aus:

Aufgaben
- Bringen Sie das Programm zum Laufen.
- Informieren Sie sich über den Befehl "del".
- Ändern Sie das Programm so, dass die Anzahl der Elemente als Parameter übergeben wird.
- Ändern Sie das Programm so, dass die gewürfelten Zahlen im Bereich von 300 bis 700 liegen.
Weblinks
- Wikipedia: Insertionsort
zurück
© ERG Saalfeld - HD. Kirmse + Dustin Wiese letztes Update 16.08.2022
|