17.11.2013 Aufrufe

Skript mit Übungen - Hochschule Ravensburg-Weingarten

Skript mit Übungen - Hochschule Ravensburg-Weingarten

Skript mit Übungen - Hochschule Ravensburg-Weingarten

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!