Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Sortieralgorithmen: Bubble, Insertion, Merge

Nach dieser Lektion: Ich kann eine Liste mit Bubble Sort, Insertion Sort und Merge Sort sortieren.

Lektion, 50 Min.5 BefehleJupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Die Bestenliste muss stimmen

Ein Sortieralgorithmus bringt Daten in eine Reihenfolge, etwa Punkte vom höchsten zum niedrigsten. Du lernst drei: Bubble Sort, Insertion Sort und Merge Sort, und du siehst, wie sie sich in der Zahl der Schritte unterscheiden.

Jedes Spiel mit einer Bestenliste sortiert. Und eine sortierte Liste macht die binäre Suche aus der letzten Lektion erst möglich.

Am Ende dieser Lektion

Notiz

Ich kann eine Liste mit Bubble Sort, Insertion Sort und Merge Sort sortieren.

Schlüsselwörter

BegriffWas er bedeutet
SortierenDaten in eine Reihenfolge bringen
Vergleichder Test, welches von zwei Elementen größer ist
Tauschzwei Elemente tauschen ihre Plätze
Durchlaufeinmal die ganze Liste entlanggehen
Verschmelzenzwei sortierte Listen zu einer sortierten Liste zusammenfügen

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Bubble Sort tauscht Nachbarn der Reihe nach

Bubble Sort vergleicht in jedem Durchlauf je zwei Nachbarn. Steht der linke Wert über dem rechten, tauschen beide den Platz. So wandert der größte Wert wie eine Blase ans Ende.

Nach dem ersten Durchlauf liegt der größte Wert richtig. Nach dem zweiten auch der zweitgrößte, und so weiter.

Beispiel: Bubble Sort auf 5, 2, 4, 1

DurchlaufListe danachWas passiert
Start5, 2, 4, 1Nichts getan
12, 4, 1, 5Die 5 wandert ganz nach rechts
22, 1, 4, 5Die 4 ist an ihrem Platz
31, 2, 4, 5Fertig

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Insertion Sort steckt Werte an die richtige Stelle

Insertion Sort arbeitet wie jemand, der Spielkarten in der Hand sortiert. Links liegt ein schon sortierter Teil. Der nächste Wert wird herausgenommen und so weit nach links geschoben, bis er passt.

Der sortierte Teil wächst bei jedem Schritt um einen Wert.

Beispiel: Insertion Sort auf 5, 2, 4, 1

SchrittSortierter Teil | RestWas passiert
Start5 | 2, 4, 1Ein Wert allein ist sortiert
12, 5 | 4, 1Die 2 rutscht vor die 5
22, 4, 5 | 1Die 4 passt zwischen 2 und 5
31, 2, 4, 5 |Die 1 rutscht ganz nach vorn

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Ein häufiger Fehler

Warnung

Viele glauben, ein Durchlauf von Bubble Sort sortiere schon die ganze Liste. Er legt aber nur einen Wert an seinen Platz. Bei einer Liste mit n Werten brauchst du bis zu n minus 1 Durchläufe.

Bevor du anfängst

Notiz

Drück oben in der Leiste auf Lab starten und warte, bis JupyterLab läuft. Die Schaltflächen Ausführen tippen ihren Befehl in das Terminal neben dem Lab. Jeder startet Python im Container jupyter.

Bubble Sort im Lab und seine Vergleiche

Der erste Befehl schreibt Bubble Sort in die Datei sortieren.py. Er gibt nichts aus. Der Code sortiert zehn Werte und zählt dabei jeden Vergleich. Der zweite Befehl startet die Datei.

Bubble Sort in sortieren.py schreiben

Befehl
docker exec jupyter sh -c "printf 'werte = [5, 2, 4, 1, 3, 9, 7, 8, 6, 0]\nvergleiche = 0\nfor runde in range(len(werte) - 1):\n    for i in range(len(werte) - 1 - runde):\n        vergleiche = vergleiche + 1\n        if werte[i] > werte[i + 1]:\n            hilfe = werte[i]\n            werte[i] = werte[i + 1]\n            werte[i + 1] = hilfe\nprint(werte)\nprint(\"Vergleiche:\", vergleiche)\n' > sortieren.py"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Bubble Sort starten

Befehl
docker exec jupyter python3 sortieren.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Zum Vergleich: Pythons eigenes sorted

Befehl
docker exec jupyter python3 -c "print(sorted([5, 2, 4, 1, 3, 9, 7, 8, 6, 0]))"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Merge Sort verschmilzt kleine sortierte Listen

Merge Sort hat zwei Ideen. Erstens: Eine Liste mit einem Element ist schon sortiert. Zweitens: Zwei sortierte Listen lassen sich leicht zu einer sortierten Liste verschmelzen.

Also startest du mit lauter Listen aus einem Element und verschmilzt immer zwei Nachbarn, bis eine einzige Liste übrig ist.

Beispiel: [2, 5] und [1, 4] verschmelzen

VergleichKleineresErgebnis bisher
2 gegen 111
2 gegen 421, 2
5 gegen 441, 2, 4
Rest übrig: 551, 2, 4, 5

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Zwei sortierte Listen verschmelzen

Code: python
a = [2, 5, 9]
b = [1, 4, 6, 8]      # Ändere die Zahlen, aber lass beide Listen sortiert.
ergebnis = []
i = 0
j = 0
while i < len(a) and j < len(b):
    if a[i] <= b[j]:
        ergebnis.append(a[i])
        i = i + 1
    else:
        ergebnis.append(b[j])
        j = j + 1
ergebnis = ergebnis + a[i:] + b[j:]   # Einer der beiden Reste ist leer.
print(ergebnis)

Das Verschmelzen in mischen.py schreiben

Befehl
docker exec jupyter sh -c "printf 'a = [2, 5]\nb = [1, 4]\nergebnis = []\ni = 0\nj = 0\nwhile i < len(a) and j < len(b):\n    if a[i] <= b[j]:\n        ergebnis.append(a[i])\n        i = i + 1\n    else:\n        ergebnis.append(b[j])\n        j = j + 1\nergebnis = ergebnis + a[i:] + b[j:]\nprint(ergebnis)\n' > mischen.py"

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Das Verschmelzen starten

Befehl
docker exec jupyter python3 mischen.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Weiterführend: die Vergleiche zählen

Bubble Sort hat bei zehn Werten 45 Vergleiche gebraucht. Wie viele wären es bei 20 Werten? Rate zuerst, ob es doppelt so viele werden. Die nächste Lektion zeigt dir die Antwort.

Über dieses Lab und seinen Quellcode: JupyterLab-Lab für Data Science: pandas, Matplotlib und scikit-learn im Browser

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.