• Keine Ergebnisse gefunden

6. Übungsblatt Aufgabe 1

N/A
N/A
Protected

Academic year: 2022

Aktie "6. Übungsblatt Aufgabe 1"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Algorithmen und Datenstrukturen Hochschule RheinMain

Sommersemester 2014 Prof. Dr. Steffen Reith

6. Übungsblatt

Aufgabe 1 (Mischen)

Algorithmus 1 mischt zwei sortierte Zahlenfolgen in eine dritte sortierte Zahlenfolge.

Data: Zwei sortierte FolgenF1 und F2

Result: Eine sortierte FolgeF, die die Elemente vonF1 und F2 enthält F =leere Folge;

while((F1 nicht leer) && (F2 nicht leer))do

if (Anfangselement von F1 ist kleiner als Anfangselement vonF2) then t=Anfangselement von F1;

lösche Anfangselement von F1; else

t=Anfangselement von F2; lösche Anfangselement von F2; end

hänget anF an;

end

hänge eine evtl. verbliebene Restfolge anF an;

returnF;

Algorithm 1: merge-Operation i) Entwerfen Sie ein Struktogramm für die Mischoperation.

ii) Entwerfen Sie eine Implementierung von Algorithmus 1, wobei die FolgenF1 und F2 als Array dargestellt werden sollen.

iii) Entwerfen Sie ein Testprogramm mit dessen Hilfe Sie Ihre Implementierung testen können.

Aufgabe 2 (Merge Sort)

Mit Hilfe der merge-Operation aus Aufgabe 1 können wir nun den rekursiven Mer- ge Sort formulieren. Als Abbruchbedingung verwenden wir, dass einelementige Folgen automatisch schon sortiert sind.

Data: Eine unsortierte FolgeF

Result: Eine sortierte FolgeF, die alle Elemente von F enthält if ( F hat genau ein Element ) then

return F;

else

halbiere F inF1 und F2; F1=Merge Sort(F1);

F2=Merge Sort(F2);

return merge(F1,F2);

end

Algorithm 2: Merge Sort

(2)

Zur Lösung dieser Aufgabe sind die folgenden Punkte zu bearbeiten:

i) Schreiben Sie eine main-Funktion, die 1000 (pseudo)zufälligen Zahlen aus dem Bereich0. . .99999berechnet und ausgibt, dann mit Merge Sort sortiert und auch das sortierte Feld ausgibt.

ii) Die Rekursion in Algorithmus 2 bricht ab, wenn die zu sortierende Folge nur noch aus einem Element besteht. Modifizieren Sie Ihre Implementation so, dass die Rekursion schon bei Folgen der Länge 3 abbricht und dann die Folge mit höchstens 3 Elementen direkt sortiert.

iii) Bei einer C-Implementierung kann man mitint gettimeofday(struct timeval

*tp, struct timezone *tzp); (oder auch durch andere Systemaufrufe) die ak- tuelle Systemzeit direkt bestimmen. Für Ruby gibt es eine Time Class die einen ähnlichen Zugriff ermöglicht. Modifizieren Sie Ihre Implementation von Merge Sort so, dass Sie messen können, wie viel Zeit der reine Sortiervorgang benötigt (also ohne Erzeugung der Zufallszahlen und Ausgabe!).

Sie können auch den (gleichen!) Sortiervorgang in einer Schleifeoftausführen und die Zeit einfach mit einer Uhr von Hand stoppen.

(a) Erstellen Sie eine Tabelle, die die Sortierzeiten für10000,20000,40000,80000 und 100000Pseudozufallszahlen enthält.

(b) Modifizieren Sie Ihren Selection Sort aus der letzten Übungsaufgabe so, dass Sie messen können wieviel Zeit der reine Sortiervorgang benötigt. Erstel- len Sie eine Tabelle, die die Sortierzeiten für 10000, 20000, 40000, 80000 und 100000 Pseudozufallszahlen enthält. Welche Rechenzeit erwarten Sie für 200000,400000und 800000 Zufallszahlen?

Aufgabe 3 (Rekursion)

Sei i 1. Mit si werden in dieser Aufgabe Strings bezeichnet. Wir legen fest, dass s1 =„a“unds2=„b“ gilt. Neue Strings werden durch die Konkatenation, symbolisiert durch, von Strings (≜Aneinanderhängen) wie folgt gebildet:

sn+2=sn+1⊙sn, wobein >0.

Beispiel: „Wies“ „baden“ =„Wiesbaden“.

i) Bestimmen Sie die Strings s3,s4 und s5 von Hand.

ii) Entwickeln Sie eine Funktion / Methode mit dem Argument i FString, die si

berechnet (Rückgabewert).

iii) Entwerfen Sie ein rekursives Programm, dass eine Zahl n N einliest und dann den Stringsn ausgibt.

Hinweis: Wenn Sie C programmieren, dann achten Sie auf eine korrekte Verwendung undFreigabe von dynamisch allokiertem Speicher, d.h. nicht mehr benötigter Speicher soll nicht erst zum Ende frei gegeben werden. Dabei ist es hilfreich nach dem Prinzip

„Die Funktion, die Speicher allokiert gibt ihn auch wieder frei“ zu arbeiten.

Die Abnahme der Lösungen zu diesen Aufgaben findet in der KW 21 ab dem 22.

Mai 2014 nach der Vorlesung statt. Die Termine für die Studenten der „Wirt- schaftsinformatik“ gibt Herr Werntges bekannt.

2

(3)

Weitere Übungsaufgaben zur O-Notation

• Es seien die folgenden Funktionen definiert:

f = 5 + 3·n g = 4·82+ 7·n h = 210·log4(n) k = n

2+13·n4+2·n n2

Füllen Sie die leeren Kästchen mit dem korrekten Symbol aus der Menge{=,̸=, ,̸∈,⊆,̸⊆}

n2 O(f) f·g·h·k O(2n)

g·g O(k) O(O(h3)) O(h)

O(g) O(3·h) O(f·g) O(n2) O(O(f·f)) O(n2)

O(3·k·h) O(f·g) O(3·k−k) O(n2)

h O(h3)

3

Referenzen

ÄHNLICHE DOKUMENTE

Upon notification by customer to the nearest DIGITAL office that the computer system, including all required prerequisite hardware and software, is ready for the

Upon notification by customer to the nearest DIGITAL office that the computer system, including all required prerequisite hardware and software, is ready for the

(If the user specified an output_file exit procedure, then the status code data_seq_error is returned to that exit procedure; see the sort_$return entry below.)

Modifizieren Sie Ihre Implementation von HeapSort so, dass Sie messen k¨ onnen, wieviel Zeit der reine Sortiervorgang ben¨ otigt (also ohne Erzeugung der Zufalls- zahlen und

Modifizieren Sie Ihre Implementation von Merge Sort so, dass Sie messen k¨ onnen, wieviel Zeit der reine Sortiervorgang ben¨ otigt (also ohne Erzeugung der Zufalls- zahlen

When this value occurs as the contents of a character position in a sort key, it is sorted according to the position the value occupies in the user

In addition to the FILE control statement required by CYBER Record Manager, you must also supply a FILE directive to specify all of the input and output files

Nach dem nächsten Weihnachtsmarktbesuch beträgt die Alkoholkonzentrationtion im Blut eines Weihnachtsmarktgastes c(Ethanol) = 0,025 mmol l. a) Bestimmen sie k, wenn nach