Sie sind auf Seite 1von 2

Prof. Dr. Christian Scheideler 26.

April 2024
Abgabe: 08. Mai 2024, 23:59 MESZ (in PANDA)

Datenstrukturen und Algorithmen


Sommersemester 24
Heimübung 3

Hinweise: Geben Sie die Lösung online über PANDA als PDF ab. Eingescannte, handschriftliche
Lösungen sind ebenfalls möglich, solange sie gut lesbar sind. Unleserliche Abgaben führen zu
Punktabzug. Lösungen sind in Abgabegruppen von 2-3 Personen einzureichen. Schreiben Sie die
Namen und Uni-Mail-Adressen aller Gruppenmitglieder gut sichtbar in Ihre Abgabe. Für Plagiate,
Einzelabgaben und Abgaben in mehr als einer Gruppe gibt es für den gesamten Zettel null Punkte.

AUFGABE 1 (8 Punkte):
Gegeben ist der Algorithmus Pow(x, n), welcher bei Eingabe einer Zahl x und einer natürlichen
Zahl n der Form n = 2k , k ∈ N (also einer Zweierpotenz) den Wert xn berechnet.
Pow(x, n)
1: while n > 1 do
2: x←x·x
3: n ← n/2
4: end while
5: return x
Geben Sie in Pseudocode einen nicht-rekursiven, also iterativen, Algorithmus an, der zusätzlich
das Problem für jede beliebige natürliche Zahl n löst (also auch falls n ̸= 3k ). Der angegebene Al-
gorithmus soll Laufzeit O(log n) haben. Zeigen Sie die Korrektheit des Algorithmus und beweisen
Sie, dass er die geforderte Laufzeit hat.

AUFGABE 2 (7 Punkte):
Gegeben seien die Arrays

A = [ 4, 42, 72, 18, 1, 100, 15, 23]

und
B = [ 11, 72, 33, 24, 8, 70, 69, 18, 33, 98, 17, 53, 7].

a) Wenden Sie den MergeSort-Algorithmus auf das Array A an.


Geben Sie dabei jeweils die Teilarrays nach jedem Divide- und jedem Merge-Schritt an.

b) Wenden Sie den TimSort-Algorithmus mit k = 3 (siehe Präsenzübung 3) auf das Array B an.
Geben Sie dabei jeweils die Teilarrays nach jedem Divide-Schritt, nach der Ausführung des
InsertionSort-Algorithmus, und nach jedem Merge-Schritt an.
AUFGABE 3 (10 Punkte):
Wir betrachten das Sortierproblem und den aus der Vorlesung bekannten rekursiven Sortieralgo-
rithmus Merge-Sort. In dieser Aufgabe wandeln wir den rekursiven Algorithmus in einen nicht-
rekursiven (also iterativen) Algorithmus um. Zur Vereinfachung darf angenommen werden, dass
es sich bei der Länge des Eingabearrays um eine Zweierpotenz handelt. Sie dürfen auch den aus
der Vorlesung bekannten Algorithmus Merge benutzen, sowie dessen Korrektheit annehmen.

a) Beschreiben Sie in Pseudocode eine nicht-rekursive Variante von Merge-Sort.

b) Zeigen Sie die Korrektheit des Algorithmus.

c) Analysieren Sie die worst-case Laufzeit des Algorithmus im O-Kalkül.

Das könnte Ihnen auch gefallen