Überblick 5.1 Sequentielles Suchen
Überblick 5.1 Sequentielles Suchen
Überblick 5.1 Sequentielles Suchen
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