Skript mit Übungen - Hochschule Ravensburg-Weingarten
Skript mit Übungen - Hochschule Ravensburg-Weingarten
Skript mit Übungen - Hochschule Ravensburg-Weingarten
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Der Bisektionsalgorithmus<br />
a = 1<br />
b = n<br />
m = ⌊ a+b<br />
2 ⌋<br />
while A[m] ≠ x & b > a<br />
If x < A[m]<br />
Then b = m<br />
Else a = m<br />
m = ⌊ a+b<br />
2 ⌋<br />
If A[m] == x<br />
Then print (’’Hurra ’’,x,’’gefunden an position ’’,m)<br />
Else print (’’Schade, ’’,x,’’nicht in A’’)<br />
Komplexität<br />
Sei die Arraylänge n = 2 k . Dann sind höchstens k Wiederholungen der While-Schleife erforderlich.<br />
Also ist die Rechenzeit proportional zu k, d.h. T (n) = c · k.<br />
Also gilt für die Bisektion<br />
n = 2 k<br />
lnn = k · ln 2<br />
k = ln n<br />
ln 2<br />
T (n) = c · ln n<br />
ln 2 = c · log 2 n = O(log n)<br />
Erläuterung: An log 2 x = ln x = c · ln x ← log n, erkennt man, daß sich alle Logarithmen<br />
ln 2<br />
nur um einen kostanten Faktor unterscheiden.<br />
Das Suchen der Einfügestelle ist <strong>mit</strong> logarithmischem Aufwand möglich.<br />
Aber: verschieben der O(n) Arrayelemente im Array kostet linearen Aufwand.<br />
Idee: verwende dynamische Datenstruktur als verkettete Liste.<br />
x<br />
Verschieben der Arrayelemente ist da<strong>mit</strong> unnötig. x wird direkt an der richtigen Stelle eingefügt.<br />
Aber: die Bisektion ist auf einer verketteten Liste nicht anwendbar.<br />
Daher: für Sortieren durch Einfügen bleibt T max (n) = Θ(n 2 )<br />
1.2 Quicksort<br />
Beispiel 1.3 Es soll die Liste 5, 3, 2, 6, 4, 1, 3, 7 sortiert werden. Dies erfolgt nach dem Prinzip<br />
divide and conquer durch rekursiv wiederholtes Aufteilen und bearbeiten, wie in folgender<br />
Tabelle zu sehen:<br />
8