Inkrementelle Algorithmen, Insertion-Sort

Werbung
3. Inkrementelle Algorithmen
Definition 3.1: Bei einem inkrementellen Algorithmus wird
sukzessive die Teillösung für die ersten i Objekte aus
der bereits bekannten Teillösung für die ersten i-1
Objekte berechnet, i=1,…,n.
Beispiel Min-Search:
Objekte sind Einträge des Eingabearrays.
Teilproblem bestehend aus ersten i Objekten
bedeutet Minimum im Teilarray A[1..i] bestimmen.
SS 2006
Datenstrukturen und Algorithmen
3. Inkrementelle Algorithmen
1
Sortieren und inkrementelle Algorithmen
Eingabe bei Sortieren : Folge von n Zahlen (a1, a 2 ,K, an ).
Ausgabe bei Sortieren : Umordnung (b1, b 2 ,K, bn ) der
Eingabefol ge, so dass b1 ≤ b 2 ≤ L ≤ bn .
Sortieralgorithmus : Verfahren, das zu jeder Folge (a1, a 2 ,K, an )
sortierte Umordnung (b1, b 2 ,K, bn )
berechnet.
Eingabe : (31,41,59, 26,51,48)
Ausgabe : (26,31,41, 48,51,59)
SS 2006
Datenstrukturen und Algorithmen
3. Inkrementelle Algorithmen
2
Insertion-Sort
Idee: Sukzessive wird eine Sortierung der Teilarrays
A[1..i], 1≤i ≤length(A) berechnet.
Insertion - Sort( A )
1 for j ← 2 to length( A )
2
do key ← A[ j ]
3
> Füge A[ j ] in die sortierte Folge A[1..j − 1] ein.
4
i ← j −1
5
while i > 0 and A[i ] > key
6
do A[i + 1] ← A[i ]
7
i ← i −1
8
A[i + 1] ← key
SS 2006
Datenstrukturen und Algorithmen
3. Inkrementelle Algorithmen
3
Invariante bei Insertion-Sort
Invariante: Vor Durchlauf der for-Schleife (Zeilen 1-8)
für Index j gilt, dass A[1..j-1] die j-1 Eingabezahlen in
sortierter Reihenfolge enthält.
Initialisierung: j=2 erste Index und A[1] ist sortiert, da
es nur eine Zahl enthält.
Erhaltung: while-Schleife (Zeilen 5-7) zusammen mit
Zeile 8 sortiert A[j] korrekt ein.
Terminierung: Vor Durchlauf mit length(A)+1 ist
A[1. . length(A)] sortiert.
SS 2006
Datenstrukturen und Algorithmen
3. Inkrementelle Algorithmen
4
Insertion-Sort – Analyse (1)
Insertion - Sort( A )
cost
times
1 for j ← 2 to length(A)
2
do key ← A[ j ]
3
> Einfügen von A[ j ] .
4
i ← j −1
c1
c2
n
n-1
c4
n-1
5
6
7
8
while i > 0 and A[i ] > key
do A[i + 1] ← A[i ]
i ← i −1
A[i + 1] ← key
c5
c6
c7
c8
∑
∑
∑
n
t
j =2 j
n
j =2
n
(t j − 1)
j =2
(t j − 1)
n-1
Hierbei ist t j die Anzahl der Durchläufe der Abfrage in
Zeile 5.
SS 2006
Datenstrukturen und Algorithmen
3. Inkrementelle Algorithmen
5
Insertion-Sort – Analyse (2)
Satz 3.2. Insertion-Sort besitzt Laufzeit Θ(n ).
2
Zum Beweis wird gezeigt:
1. Es gibt ein c 2 , so dass die Laufzeit von
Insertion - Sort bei allen Eingaben der
Größe n immer höchstens c 2 n 2 ist.
2. Es gibt ein c1, so dass für alle n eine
Eingabe In der Größe n existiert bei der
Insertion - Sort mindestens Laufzeit
c1n 2 besitzt.
SS 2006
Datenstrukturen und Algorithmen
3. Inkrementelle Algorithmen
6
Herunterladen