Sortierverfahren Ubungen¨
Aufgabe 1
Sortiere die Zahlen im Array A = [8, 3, 7, 6, 2, 4] schrittweise mit Selectionsort in aufsteigender Reihenfolge.
Wie viele Vergleiche und Vertauschungen sind daf¨ur insgesamt n¨otig?
Aufgabe 2
Sortiere die Zahlen im ArrayA = [9, 3, 5, 2, 1, 4, 8]schrittweise mit Selectionsort in aufsteigender Reihenfolge.
Wie viele Vergleiche und Vertauschungen sind daf¨ur insgesamt n¨otig?
Aufgabe 3
Sortiere die Zahlen im Array A = [8, 3, 7, 6, 2, 4] schrittweise mit Insertionsort in aufsteigender Reihenfolge.
Wie viele Vergleiche und Verschiebungen sind daf¨ur insgesamt n¨otig?
Aufgabe 4
Sortiere die Zahlen im Array A = [3, 1, 4, 2, 7, 9] schrittweise mit Insertionsort in aufsteigender Reihenfolge.
Wie viele Vergleiche und Verschiebungen sind daf¨ur insgesamt n¨otig?
Aufgabe 5
Sortiere die Zahlen im Array A = [3, 1, 4, 2, 7, 9] schrittweise mit Bubblesort in aufsteigender Reihenfolge.
Wie viele Vergleiche und Vertauschungen sind daf¨ur insgesamt n¨otig?
Aufgabe 6
Sortiere die Zahlen im Array A = [7, 5, 4, 1] schrittweise mit Bubblesort in aufstei- gender Reihenfolge.
Wie viele Vergleiche und Vertauschungen sind daf¨ur insgesamt n¨otig?
Aufgabe 7
Sortiere die Zahlen im Array A = [8, 1, 3, 2, 7, 9, 4]schrittweise mit Quicksort in aufsteigender Reihenfolge.
Wie viele Vergleiche und Vertauschungen sind daf¨ur insgesamt n¨otig?
1
Aufgabe 8
Sortiere die Zahlen im ArrayA = [2, 4, 7, 1]schrittweise mit Quicksort in aufsteigen- der Reihenfolge.
Wie viele Vergleiche und Vertauschungen sind daf¨ur insgesamt n¨otig?
Aufgabe 9
Sortiere die Zahlen im Array A = [1, 2, 3, 4, 5, 7, 8, 9] schrittweise mit der ite- rativen Version von Mergesort in aufsteigender Reihenfolge.
Wie viele Vergleiche und Verschiebungen sind daf¨ur insgesamt n¨otig?
Aufgabe 10
Sortiere die Zahlen im Array A = [0, 2, 3, 4, 5, 6, 6, 7, 8, 9] schrittweise mit der iterativen Version von Mergesort in aufsteigender Reihenfolge.
Wie viele Vergleiche und Verschiebungen sind daf¨ur insgesamt n¨otig?
Aufgabe 11
Zeige, wie die Zahlen im Array A = [3, 2, 1, 1, 0, 1, 3, 2] mit Countingsort auf- steigend sortiert werden, indem du die daf¨ur n¨otigen Arrays angibst.
Aufgabe 12
Zeige, wie die Zahlen im ArrayA = [2, 5, 3, 2, 2, 3, 2, 5, 1, 2]mit Countingsort aufsteigend sortiert werden, indem du die daf¨ur n¨otigen Arrays angibst.
Aufgabe 13
Ein Computerprogramm ben¨otigt f¨ur das Sortieren einer Liste mit 10 000 zuf¨allig ange- ordneten Elementen mit dem Selectionsort-Verfahren etwa 10 Sekunden.
Wie lange wird das Programm auf dem gleichen Computer f¨ur eine Liste mit 20 000 zuf¨allig angeordneten Elementen ben¨otigen?
Aufgabe 14
Bestimme die
(a) minimale Rekursionstiefe (b) maximale Rekursionstiefe
die das Quicksort-Verfahren bei einem Array mit 100 Elementen bew¨altigen muss, bis die zu verarbeitenden Teilarrays die L¨ange 1 haben.
2
Aufgabe 13
Nenne zwei Modifikationen, mit denen die Worst Case-Laufzeit des Quicksort-Verfahrens vermieden werden kann.
Aufgabe 14
Gib die Worst- und Best-Case Laufzeiten der folgenden Sortieralgorithmen in Abh¨angigkeit der Arrayl¨ange n an.
Worst Case Best Case Mergesort
Selectionsort Countingsort Insertionsort Quicksort
Aufgabe 15
Beschreibe zwei Situationen, in denen man jeweils Quicksort bzw. Mergesort bevorzugt anwende sollte.
Aufgabe 16
Eine Implementierung f¨ur Mergesort ben¨otigt f¨ur das Sortieren von 106 Zahlen 3.6 Sekun- den. Wie lange ben¨otigt diese Implementierung f¨ur das Sortieren von 107 Zahlen?
Aufgabe 17
Eine Implementierung von Mergesort ben¨otigt zum Sortieren von 104 Zahlen 0.024 Se- kunden. Eine Implementierung von Selectionsort ben¨otigt f¨ur das Sortieren der gleichen Zahlen 2.75 Sekunden.
Berechne anhand der Beispieldaten die Konstanten cM und cS der Laufzeiten TM(n) bzw. TS(n) f¨ur das jeweilige Sortierverfahren.
Aufgabe 18
Schreibe eine Python-Funktion isSorted(A), deren formales Argument A ein Array aus Zahlen ist und die den Wert True ausgibt, falls das Array bereits aufsteigend sortiert ist und False sonst.
Aufgabe 19
Wie viele Vergleiche f¨uhrt Selectionsort durch, wenn es ein Array mit 200 Elementen sortiert?
3
Aufgabe 20
Zu welchem Sortierverfahren geh¨ort die folgende Hilfsfunktion?
1 def doSomething(A, a, b, c):
2 L = A[a:b] + [float(’inf’)]
3 R = A[b:c] + [float(’inf’)]
4 i = 0
5 j = 0
6 for k in range(a, c):
7 if L[i] <= R[j]:
8 A[k] = L[i]
9 i = i+1
10 else:
11 A[k] = R[j]
12 j = j+1
Aufgabe 21
Gegeben ist eine Python-Implementation f¨ur Insertionsort, die eine Liste von Zahlen auf- steigend sortiert.
1 def insertionsort(A):
2 for i in range(1, len(A)):
3 x = A[i]
4 j = i-1
5 while(j >= 0 and A[j] > x):
6 A[j+1] = A[j]
7 j = j-1
8 A[j+1] = x
Andere das Programm so ab, dass die Werte¨ absteigend sortiert werden.
4