Beruflich Dokumente
Kultur Dokumente
2023
Institut für Informatik
Prof. Dr. Thomas Seidl
Sandra Gilhuber, Philipp Jahn
(a) Benutzen Sie QuickSort mit folgenden zwei Pivotstrategien: Letztes Arrayelement bzw. Median aus den
Elementen an Positionen 1, ⌊ n2 ⌋ und n (Position 1, falls n ≤ 3). Markieren Sie alle Pivot-Elemente.
Ein-elementige Teillisten enthalten kein Pivot-Element.
Lösungsvorschlag:
• QuickSort, Pivot = letztes Element
42,17,12,15,4,11,31,14 (+7)
12,4,11,14,42,17,15,31 (+2)
4,11,12,14,42,17,15,31 (+3)
4,11,12,14,17,15 31,42 (+1)
4,11,12,14,15,17,31,42
1
Lösungsvorschlag:
• SelectionSort
42,17,12,15,4,11,31,14 (+7)
4,17,12,15,42,11,31,14 (+6)
4,11,12,15,42,17,31,14 (+5)
4,11,12,15,42,17,31,14 (+4)
4,11,12,14,42,17,31,15 (+3)
4,11,12,14,15,17,31,42 (+2)
4,11,12,14,15,17,31,42 (+1)
4,11,12,14,15,17,31,42
• InsertionSort
42,17,12,15,4,11,31,14 (+0)
42,17,12,15,4,11,31,14 (+1)
17,42,12,15,4,11,31,14 (+2)
12,17,42,15,4,11,31,14 (+3)
12,15,17,42,4,11,31,14 (+4)
4,12,15,17,42,11,31,14 (+5)
4,11,12,15,17,42,31,14 (+2)
4,11,12,15,17,31,42,14 (+5)
4,11,12,14,15,17,31,42
QuickSort, Pivot=last: 13
QuickSort, Pivot=median-of-three: 14 + 6
Selection: 28
InsertionSort: 22
(a) Wie bewerten Sie die Entscheidung zunächst die runs zu identifizieren?
(b) Geben Sie die Laufzeit für den Best- und Worst-Case an.
Lösungsvorschlag:
TimSort)
a) Dies erscheint sinnvoll, da in der Praxis komplett ungeordnete Daten selten vorkommen. Auch kann
das Merging beschleunigt werden, wenn bekannt ist, das ein run absteigend ist.
b) Best-Case: Bereits sortiert: Dies wird im ersten Durchlauf zur Identifizierung der runs erkannt ⇒
O(N ). Worst Case: Wie Mergesort O(N · log(N )). Insertion-Sort kann vernachlässigt werden, da er stets
für eine konstant lange Teilliste aufgerufen wird und dann in O(1) läuft.
2
Aufgabe 7-3 Multiple Choice zum Thema Sortieralgorithmen
(a) Die folgende Liste (41, 12, 43, 1, 8, 6, 44, 17, 82, 50, 42) wird anhand von QuickSort sortiert.
Nach der 1. Iteration des Algorithmus schaut die Liste wie folgt aus:
(12, 1, 8, 6, 17, 41, 43, 44, 82, 50, 42)
Welche Regeln können in dieser Iteration das Pivot-Element bestimmt haben?
1 BubbleSort
2 SelectionSort
3 InsertionSort
4 MergeSort
5 QuickSort
(c) Was ist die richtige Reihenfolge der Algorithmen bezüglich ihrer best-case Komplexität?
3
(d) Welcher Sortieralgorithmus hat die kleinste worst-case Komplexität?
1 HeapSort
2 InsertionSort
3 QuickSort
4 BubbleSort
(e) Die Liste (42, 2, 14, 21, 46, 1, 19, 66) wird mithilfe von MergeSort sortiert. Wie schaut die Liste nach
der zweite Iteration der Merge-Phase aus?
(f) Die sortierte Liste: (1, 2, 6, 12, 17, 22, 26, 90, 99, 100, 112) wird um die Zahlen 3 und 10 ergänzt:
(1, 2, 6, 12, 17, 22, 26, 90, 99, 100, 112, 3, 10)
Welcher Algorithmus sortiert die Liste am effizientesten?
2 InsertionSort
3 SelectionSort
4 BubbleSort
3 Der benötigte Speicherplatz für HeapSort erhöht sich nach jeder Iteration des Algorithmus
4 Bezüglich der Zeitkomplexität, ist HeapSort in jeder Hinsicht (best-, avg- und worst-case)
besser als SelectionSort.
5 HeapSort ist stabil.
6 Bezüglich der Zeitkomplexität, ist HeapSort in jeder Hinsicht (best-, avg- und worst-case)
besser als BubbleSort.
4
(h) BONUS FRAGE
In der Vorlesung haben wir sechs Sortieralgorithmen genauer betrachtet. Recherchiere nun selbstständig
im Internet und informiere dich über den Algorithmus BogoSort.
Welche Aussagen sind richtig?
1 Die best-case Laufzeit von BogoSort ist besser als die best-case Laufzeit der besprochenen
Algorithmen
2 Die sort() Methode in Python basiert auf BogoSort.
3 Die worst-case Laufzeit von BogoSort ist schlechter als die worst-case Laufzeit von Bubble-
Sort.
4 Mit BogoSort können unsortierte Listen in besonderen Fällen in nur einer Iteration sortiert
werden.
5 BogoSort ist nicht stabil.
6 BogoSort ist sehr geeignet, um Listen zu sortieren, die vorsortierte Teillisten enthalten.
5
Lösungsvorschlag:
(a) Richtig sind 1, 4, 5, 6.
Abkürzung Median von erstes, mittleres und letztes Element“: EML Meidan
”
Man merkt, dass hier 41 als Pivot gewählt wurde. Er gilt als erstes Element der Liste, Median der Liste
(Sortierte Liste: 1, 6, 8, 12, 17, 41, 43, 44, 50, 82, 84) und EML Median (Erstes: 41; Mittleres: 6; Letztes:
42; sortiert: 6, 41, 42). Außerdem könnte man immer davon ausgehen, dass ein Element zufällig gewählt
wurde.
6
Aufgabe 7-4 Alternatives Sortieren
Gegeben sind Namen von A-Z und eine Hashingfunktion f, welche die Namen anhand ihres ersten Buchstabes
in ein Array mit 26 verketteten Listen an das Ende der dazugehörigen Liste hängt.
Lösungsvorschlag:
Vorteile: einfach, intuitiv, simple zu implementieren
Nachteile: Häufungen an einzelnen Namen, möglicherweise lange Suchzeiten bei hohem Füllgrad
Nun ist statt verketteten Listen jeweils noch ein Array mit 26 Feldern in jedem Feld dieses ersten Arrays. Die
Funktion g hängt dort die eingehenden Namen anhand des 2. Buchstabens in die jeweiligen Namens an.
(c) wäre die Verteilung auf die einzelnen Felder besser, wenn statt des 2. Buchstabens der 3. genommen
würde?
(d) versuchen sie bessere Vorgehensweisen für eine Einordnung von Namen zu finden. Bewerten sie diese
anhand von Verteilung und vorrausichtlicher Suchdauer.
Lösungsvorschlag:
Vorteil: schnellere Suchzeit als 1. Variante durch mehr Verzweigungen.
Nachteile: mehr Grundaufwand, phonetische bedingte Häufungen von 2. Buchstaben
3. Buchstabe: eventuell bessere Verteilung, da phonetische Zusammenhänge teils umgangen werden können.
Unklar was bei sehr kurzen Namen passiert (zB To)
mögliche Alternativen: Namen an Baumstruktur einordnen, Aus Buchstabensumme (1-26 aufsummieren)
modulu 26 rechnen...