• Keine Ergebnisse gefunden

Weitere ¨ Ubungsaufgaben zur O-Notation

N/A
N/A
Protected

Academic year: 2022

Aktie "Weitere ¨ Ubungsaufgaben zur O-Notation"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Algorithmen und Datenstrukturen Hochschule RheinMain

Sommersemester 2012 Prof. Dr. Steffen Reith

5. ¨ Ubungsblatt

Aufgabe 1 (Mischen)

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

Eingabe: Zwei sortierte FolgenF1 und F2

Ergebnis: Eine sortierte FolgeF, die die Elemente von F1 undF2 enth¨alt F = leere Folge;

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

if (Anfangselement von F1 ist kleiner als Anfangselement von F2) { t= Anfangselement von F1;

l¨osche Anfangselement von F1; }

else{

t= Anfangselement von F2; l¨osche Anfangselement von F2; }

h¨anget anF an;

}

h¨ange eine evtl. verbliebene Restfolge anF an;

returnF;

Algorithmus 1: merge-Operation i) Entwerfen Sie ein Struktogramm f¨ur 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¨onnen.

Aufgabe 2 (Merge Sort)

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

Eingabe: Eine unsortierte FolgeF

Ergebnis: Eine sortierte FolgeF0, die alle Elemente vonF enth¨alt if ( F hat genau ein Element ){

return F;

} else{

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

F2= Merge Sort(F2);

return merge(F1,F2);

}

Algorithmus 2: Merge Sort

(2)

Zur L¨osung dieser Aufgabe sind die folgenden Punkte zu bearbeiten:

i) Schreiben Sie eine main-Funktion, die 1000 (pseudo)zuf¨alligen Zahlen aus dem Bereich 0. . .99999 berechnet 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 Re- kursion schon bei Folgen der L¨ange≤3 abbricht und dann die Folge mit h¨ochstens 3 Elementen direkt sortiert.

iii) Mit int gettimeofday(struct timeval *tp, struct timezone *tzp); (oder auch durch andere Systemaufrufe) kann man die aktuelle Systemzeit bestimmen.

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 und Ausgabe!).

(a) Erstellen Sie eine Tabelle, die die Sortierzeiten f¨ur 10000, 20000, 40000, 80000 und 100000 Pseudozufallszahlen enth¨alt.

(b) Modifizieren Sie Ihren Selection Sort aus der letzten ¨Ubungsaufgabe so, dass Sie messen k¨onnen wieviel Zeit der reine Sortiervorgang ben¨otigt. Erstel- len Sie eine Tabelle, die die Sortierzeiten f¨ur 10000, 20000, 40000, 80000 und 100000 Pseudozufallszahlen enth¨alt. Welche Rechenzeit erwarten Sie f¨ur 200000, 400000 und 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¨angen) wie folgt gebildet:

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

Beispiel:

”Wies“

”baden“ =

”Wiesbaden“.

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

ii) Entwickeln Sie eineC-Funktionchar* FString(int i), diesi berechnet.

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

Hinweis: Achten Sie auf eine korrekte Verwendung und Freigabe von dynamisch al- lokiertem Speicher, d.h. nicht mehr ben¨otigter 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¨osungen zu diesen Aufgaben findet erst in der KW 19 ab dem 9. Mai 2012 statt.

2

(3)

Weitere ¨ Ubungsaufgaben 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¨ullen Sie die leeren K¨astchen mit dem korrekten Symbol aus der Menge {=,6=,∈ ,6∈,⊆,6⊆}

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

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

(Obacht: wegen einer verwaltungstechnischen Panne finden nur noch die Tutorien von Till statt: Montag 10-12 und

Bei einer Multipliktion wird das wahre Er- gebnis wenig verf¨alscht, wenn man den einen Faktor etwas aufrundet und den anderen zum Ausgleich etwas abrundet.. Dagegen bei der

1997 GS88 Ericson Der Begriff Smartphone wird erstmals von Ericson mit Einführung des GS88. 1997 GS88 Ericson

Universit¨ at Konstanz Sebastian Gruler Fachbereich Mathematik und Statistik Mar´ıa L´ opez Quijorna. Sommersemester 2013

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

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önnen, wie viel Zeit der reine Sortiervorgang benötigt (also ohne Erzeugung der Zufallszahlen und Ausgabe!).