Vertiefung der Programmierung

Sortieren
Motivation
Wann macht
es Sinn, Daten zu sortieren?
| Vorname ↑ | Nachname | Note 🤪 |
|---|---|---|
| David | Engelhardt | ... |
| Hans | Timmermann | ... |
| Kjell | Treder | ... |
| Marian | Himstedt | ... |
Preis ↑
Zufriedenheit ⭐️ ↓
Sortierverfahren
BubbleSort
MergeSort
Quicksort
TimSort
InsertionSort
SelectionSort
🔗 Wikipedia: Sortierverfahren
uvm.
BubbleSort (Algorithmus)
- BubbleSort vertauscht immer benachbarte Elemente
- Datenreihe wird wiederholt durchlaufen:
- Am Ende steht immer das aktuell größte Element ganz hinten / vorne (aufsteigende vs. absteigende Sortierung)
- jeder Durchlauf betrachtet ein Element weniger
➔ dieses wurde beim letzten Mal einsortiert
BubbleSort(array)
n = Länge von array
für i = 0 bis n - 2
für j = 0 bis n - 2 - i
wenn array[j] > array[j + 1]
tausche array[j] und array[j + 1]Bild ist gemeinfrei
| Best case | n |
| Average case | n² |
| Worst case | n² |
BubbleSort (Beispiel)
live
Bild ist gemeinfrei
MergeSort (Algorithmus)
Bild ist gemeinfrei
- Divide (=Aufteilen)
- Teile die Daten in zwei etwa gleich große Abschnitte
- Sort (=Sortieren)
- Sortieren den linken Abschnitt
- Sortiere den rechten Abschnitt
- Merge (=Zusammenführen)
- Füge die Abschnitte unter Beibehaltung der Ordnung zusammen
- Zusammenführen funktioniert nach »Reißverschlussprinzip«
| Best case | n*log(n) |
| Average case | n*log(n) |
| Worst case | n*log(n) |
MergeSort (Beispiel)
Bild ist gemeinfrei
live
BubbleSort vs. MergeSort (am Beispiel)
- BubbleSort
- Nimm die Karten auf die Hand und vertausche zwei benachbarte Karten
➔ wenn sie in der falschen Reihenfolge sind - Wiederhole das, bis die Karten geordnet sind
- Nimm die Karten auf die Hand und vertausche zwei benachbarte Karten
- MergeSort
- Teile die Karten in zwei Teile
- Sortiere die beiden Haufen einzeln
- füge sie nach Reißverschlussprinzip zusammen
Zusammenfassung
-
Sortieren ist zentrales »Problem« der Informatik
-
Schnelles Suchen in sortierten Datenreihen möglich ➔ Binäre Suche
-
BubbleSort ist ein einfaches Verfahren
-
leicht zu implementieren (und zum Lernen)
-
In der Praxis nicht mehr oft genutzt
-
-
MergeSort ist sehr effizient und wird (in leicht angepasster Form) in Java genutzt

[a,b,c,d] ↑
[d,c,b,a] ↓
Sortieren
By blackbill
Sortieren
- 158