04.10.2013 Aufrufe

Überblick 5.1 Sequentielles Suchen

Überblick 5.1 Sequentielles Suchen

Überblick 5.1 Sequentielles Suchen

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.

5.5 Einfache Sortieralgorithmen mit Zeitaufwand !(n 2 )<br />

• Array von n Elementen, z.B. ganze Zahlen:<br />

int[] a; // a.length = n<br />

Sortiere die Elemente von a in aufsteigender Reihenfolge.<br />

In place Algorithmen benutzen bei der Sortierung neben dem Array a<br />

höchstens O(1) weiteren Speicherplatz.<br />

• Insertion Sort:<br />

void insertionSort(int[] a) {<br />

for (int i = 1; i < a.length; i++) {<br />

int tmp = a[i];<br />

int j = i - 1;<br />

while ((j >= 0) && (tmp < a[j])) {<br />

}<br />

}<br />

a[j + 1] = a[j];<br />

j = j - 1;<br />

}<br />

a[j + 1] = tmp;<br />

• Insertion Sort ist stabil!<br />

Austausch<br />

© Klaus Hinrichs Informatik II – <strong>Suchen</strong> und Sortieren<br />

Insertion Sort<br />

© Klaus Hinrichs Informatik II – <strong>Suchen</strong> und Sortieren<br />

0 1 j i n–1<br />

… …<br />

sortiert unsortiert<br />

• v best , v average , v worst bezeichne die Anzahl Vergleichsoperationen in der<br />

Bedingung der while-Schleife, a best , a average , a worst die Anzahl Durchläufe<br />

des Rumpfes der while-Schleife, d.h. die Anzahl Austauschoperationen,<br />

im besten, durchschnittlichen und schlimmsten Fall.<br />

v best = n !1<br />

v = inv + (n !1) = average average n2 + 3 "n ! 4<br />

4<br />

v worst = i<br />

n!1<br />

# =<br />

i=1<br />

n2 ! n<br />

2<br />

a best = 0<br />

5-31<br />

a = inv = average average n2 ! n<br />

4<br />

a worst = i<br />

n!1<br />

" =<br />

i=1<br />

n2 ! n<br />

2<br />

• inv average bezeichnet die durchschnittliche Anzahl Inversionen in einer<br />

Permutation (siehe Abschnitt 4.7)<br />

• Insertion Sort ist im besten Fall ein !(n) Algorithmus, im<br />

durchschnittlichen und schlimmsten Fall ein !(n 2 ) Algorithmus.<br />

• Binäres <strong>Suchen</strong> der korrekten Einfügeposition von a[i] im bereits<br />

sortierten Teil würde die Zeitkomplexität nicht verbessern!<br />

5-32

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!