Sie sind auf Seite 1von 2

Algorithmen, Datenstruktu-

ren und Graphentheorie


Prof. Dr. Ralf Thiele
Hochschule Bonn-Rhein-Sieg
Sommersemester 2023
18. Oktober 2023

Aufgabe 1 [ACAT]

Welche Zustände (Reihenfolge der Elemente nach jeder Hauptiteration bzw. Rekursion) nehmen
die Sequenzen an, wenn sie mittels

(1) Selection Sort in place

(2) Insertion Sort in place

(3) Bubble Sort in place

(4) Merge Sort

(5) Quick Sort in place

(6) Heap Sort in place

sortiert werden?

Aufgabe 2 [Theorie]

Um welchen Faktor verlängert sich die Ausführungszeit eines Θ(n log n)-Verfahrens (z.B. Merge
Sort), wenn man von n = 1000 zu n = 1000000 (eine Million) Elementen übergeht?
Um wieviel verlängert sich im Vergleich die Ausführungszeit eines Θ(n2 )-Verfahrens (z.B. Inser-
tion Sort)?
Wie lange dauert also jeweils die Ausführung für eine Million Elemente, wenn sie für tausend
Elemente 1s dauert?

Aufgabe 3 [Theorie]

Schildere das Konzept der Stabilität bei Sortieralgorithmen. Nenne welche der o. g. Sortieralgo-
rithmen stabil und instabil sind, und erkläre warum. Erläutere anschließend, warum Stabilität in
bestimmten Anwendungen wichtig sein kann und nenne einige Beispiele solcher Anwendungen.
Gib schließlich ein Beispiel für ein Szenario an, in dem Stabilität nicht wichtig ist, und erkläre
warum.
Aufgabe 4 [Praxis]

Implementiere ein Programm in der bevorzugten Programmiersprache, das für die Komplexitäts-
klassen O(1),O(log(n)),O(n),O(nlog(n)),O(n2 ),O(n3 ) für die Eingabelänge n die Laufzeit f (n)
zurückgibt. Berechne mit dessen Hilfe anschließend für jede Komplexitätsklasse die Laufzeiten
für 1 < n < 1000 und stelle sie auf einem Scatter-Plot dar. Wie weit kommt man mit einem
32bit int für die Komplexitätsklasse O(2n )?

Aufgabe 5 [Praxis]

Entwerfe und implementiere ein Programm in der bevorzugten Programmiersprache, das die
Leistung der in Aufgabe 1. genannten Sortieralgorithmen für int-Arrays unterschiedlicher Größe
vergleicht (z. B. 100 - 1000000 in 20 Schritten). Es soll die Zeit messen, die jeder Algorithmus
benötigt, um jede Array-Größe zu sortieren und die Ergebnisse auf einem Scatter-Plot darstellen.
Analysiere schließlich die Ergebnisse im Bezug auf den best-, avg- und worst-case.

Aufgabe 6 [Praxis]

Passen Sie die Algorithmen aus Aufgabe 5. so an, dass sie strings sortieren können. Die An-
forderung ist, dass die Zeichen aufsteigend nach der UTF-8 Kodierung sortiert werden sollen.
Zum Beispiel sollte der string ”Sort me plz”als ” Selmoprtz”sortiert werden.
Überlegen Sie gut was Sie tun können, um möglichst viel Code wiederverwenden zu können.

Bearbeiten Sie die Aufgaben vor der Übung eigenständig! Hilfe bei der Lösung der Aufgaben
erhalten Sie in den Übungen.

Das könnte Ihnen auch gefallen