• Keine Ergebnisse gefunden

Quick Sort

N/A
N/A
Protected

Academic year: 2021

Aktie "Quick Sort"

Copied!
13
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Quick Sort

divide and conquer

Rupert J. Hartung

(2)

Warum Sortieralgorithmen?

• Konzepte (z.B. Datenstrukturen)

• Analyse

• Optimalität

(3)

# Vergleiche wc # Vergleiche ac zus.

Speicher QuickSort 12N2 +O(N) 1.4N logN +O(N) O(logN) HeapSort 2N logN + O(N) Θ(N logN) O(1) MergeSort N logN + O(N) Θ(N logN) N + O(1)

Insertion Sort

1

2N2 +O(N) 1

4N2 +O(N) O(1)

(4)

QuickSort ( A , L , R ) { QuickSort ( A , 1 , N );

l := L; r := R + 1;

V := A[L];

while (l < r) {

while (l < r und A[r] > V ) r − − ; while (l < r und A[l] < V ) l + +;

if (l < r) { A[l] ↔ A[r] };

}

if (A[r] < V ) r − − ; A[r] ↔ A[L];

## ( ∗ )

QuickSort ( A , L , r − 1 );

QuickSort ( A , r + 1 , R );

}

(5)

Korrektheit

Behauptung: Bei ( ∗ ) gilt

A

i

≤ V = A

r

≤ A

j

für alle

i < r < j

(6)

Analyse

# (Schlüssel-)Zuweisungen ≤ # Vergleiche

Q([A

1

, . . . , A

N

]) : Laufzeit bei Eingabe [A

1

, . . . , A

N

] Q

wc

(N ) : worst-case Laufzeit

auf N Objekten ( = max

A

Q([A

1

, . . . , A

N

]) ) Q

ac

(N ) : average-case Laufzeit

auf N Objekten

( = E

A

Q([A

1

, . . . , A

N

]) )

Q([A

1

, . . . , A

N

]) = N + Q([A

01

, . . . , A

0r−1

])

+ Q([A

0r+1

, . . . , A

0N

]) + 1

(7)

a) worst case:

Konzept:

(i) worst case nden,

(ii) Laufzeit berechnen,

(iii) Maximalität zeigen.

Im worst case ist r groÿ oder klein

(ausprobieren oder überlegen)

(8)

b) average case:

Jede der N ! möglichen Reihenfolgen (Per- mutationen) sei gleich wahrscheinlich.

Kennzeichen der Gleichverteilung (uniform dis- tribution):

Pr (A

π(1)

≤ . . . ≤ A

π(N)

) = 1 N !

oder

Pr (A

π(1)

≤ . . . ≤ A

π(N)

) = Pr (A

σ(1)

≤ . . . ≤ A

σ(N)

)

(9)

Gesucht:

Qac(N) = 1 n!

X

π∈Sn

Q([π(1), . . . , π(N)])

Wir wissen nur:

Q(A1, . . . , AN) = N + Q(A01, . . . , A0r−1)

+ Q(A0r+1, . . . , A0N) + 1

Wir müssen herausnden:

• Verteilung von r

• Verteilung von [A01, . . . , A0N−1]

Ziel: Qac(N) = g(Qac(1), Qac(2), . . . , Qac(N − 1)) Rekursion auösen

(10)

Behauptung: r ist gleichverteilt auf {1, . . . , N }

Beweis: Sei 1 ≤ r

0

≤ N . Dann

Pr ( r = r

0

) =

= Pr (r

0

− 1 der A

i

sind kleiner als V (= A

1

))

= Pr ( A

1

= r

0

) = 1

N

(11)

Behauptung: Wenn auf der Eingabe die Gleich- verteilung vorliegt, so auch auf den danach zu

sortierenden Teillisten (A

01

, . . . , A

0r−1

) , (A

0r+1

, . . . , A

0N

) .

Daher:

Q

ac

(N ) = N + Q

ac

(r − 1) + Q(N − r) + 1

(12)

Ergebnis

Satz: Quicksort benötigt zum Sortieren von N Schlüsseln höchstens

12

N

2

+

32

N +O(1) Ver- gleiche.

Im Durchschnitt werden nur 2 ln 2 N log N +

O(N ) Vergleiche benötigt ( 2 ln 2 ≈ 1.386 . . . ).

(13)

Verbesserung

Herabsetzten der wc-Komplexität durch

Randomisierung

Referenzen

ÄHNLICHE DOKUMENTE

The file operations applicable for a specific file are contained as function pointers in an instance of struct file_operations (fs.h):. For each file system, one instance of a

//ein Teilarray wurde bis zum Ende (alle Elemente) abgearbeitet //jetzt müssen die Reste des zweiten Teilarrays einsortiert werden //da ich nicht weiss, welches fertig ist,

Da Pferde ihre Farbe nicht ¨andern, muss dies dieselbe Farbe wie die der ersten Gruppe sein. Nach dem Induktionsprinzip haben alle Pferde

H¨ ohere Mathematik I f¨ ur die Fachrichtung Physik L¨ osungsvorschl¨ age

Die Schließungseigenschaft ergibt sich daraus, dass die sukzessive Spiegelung an einer ungeraden Anzahl kopunktaler Geraden auf eine einzige Geradenspiegelung reduziert

Für p = 1 erhält man die di- vergente harmonische Reihe und für p &lt; 1 ist die Reihe divergent, weil die Summanden nicht gegen 0 konvergieren (oder auch weil die harmonische Rei-

4 Stelle einen Term für die Gesamtlänge der Kanten auf

Before the basic timing formula can be used, how- ever, the values of PI and P2 must be adjusted to re- Hect the number and length of additional control data