+ All Categories
Home > Documents > Algorithm Engineering „Schnelles Sortieren“

Algorithm Engineering „Schnelles Sortieren“

Date post: 23-Feb-2016
Category:
Upload: gali
View: 45 times
Download: 0 times
Share this document with a friend
Description:
Algorithm Engineering „Schnelles Sortieren“. Stefan Edelkamp. Überblick. Kriterien für Sortierverfahren State- of - the -Art Clever- Quicksort Heapsort Weak-Heapsort Quick- Heapsort Radix-Exchange- Sort Sortieren durch Fachverteilung. Kriterien für Sortierverfahren. - PowerPoint PPT Presentation
Popular Tags:
55
Algorithm Engineering „Schnelles Sortieren“ Stefan Edelkamp
Transcript
Page 1: Algorithm   Engineering  „Schnelles Sortieren“

Algorithm Engineering „Schnelles Sortieren“

Stefan Edelkamp

Page 2: Algorithm   Engineering  „Schnelles Sortieren“

Überblick

Kriterien für Sortierverfahren State-of-the-Art Clever-Quicksort Heapsort Weak-Heapsort Quick-Heapsort Radix-Exchange-Sort Sortieren durch Fachverteilung

Page 3: Algorithm   Engineering  „Schnelles Sortieren“

Kriterien für Sortierverfahren

Page 4: Algorithm   Engineering  „Schnelles Sortieren“

State-of-the-Art

Page 5: Algorithm   Engineering  „Schnelles Sortieren“

State-of-the-Art (2)

Page 6: Algorithm   Engineering  „Schnelles Sortieren“

State-of-the-Art (3)

Page 7: Algorithm   Engineering  „Schnelles Sortieren“

Clever-Quicksort (Median-of-3)

Page 8: Algorithm   Engineering  „Schnelles Sortieren“

Clever-Quicksort (Median-of-3)

Σ

Page 9: Algorithm   Engineering  „Schnelles Sortieren“

ImplementierungSiehe Sedgewick: The analysis of quicksortprograms, Acta Informatica, Journal of Algorithms,15(1):76-100, 1993

Page 10: Algorithm   Engineering  „Schnelles Sortieren“

Heapsort

Page 11: Algorithm   Engineering  „Schnelles Sortieren“

Definition

Page 12: Algorithm   Engineering  „Schnelles Sortieren“

Veranschaulichung

Page 13: Algorithm   Engineering  „Schnelles Sortieren“

Entfernen des Maximums

Page 14: Algorithm   Engineering  „Schnelles Sortieren“

Versickern

Page 15: Algorithm   Engineering  „Schnelles Sortieren“

Pseudo-Code

Page 16: Algorithm   Engineering  „Schnelles Sortieren“

Erstellung eines Heaps

Page 17: Algorithm   Engineering  „Schnelles Sortieren“

Äußere Schleife

Page 18: Algorithm   Engineering  „Schnelles Sortieren“

Analyse Iteriertes Versickern

Σ

Page 19: Algorithm   Engineering  „Schnelles Sortieren“

Analyse

Page 20: Algorithm   Engineering  „Schnelles Sortieren“

Beobachtung

Page 21: Algorithm   Engineering  „Schnelles Sortieren“

Bottom-Up-Heapsort

Page 22: Algorithm   Engineering  „Schnelles Sortieren“

Pseudo-Code (1)

Page 23: Algorithm   Engineering  „Schnelles Sortieren“

Pseudo-Code (2)

Page 24: Algorithm   Engineering  „Schnelles Sortieren“

Worst-Case

Page 25: Algorithm   Engineering  „Schnelles Sortieren“

Average Case

Page 26: Algorithm   Engineering  „Schnelles Sortieren“

Weak-Heap-Sort

Page 27: Algorithm   Engineering  „Schnelles Sortieren“

Verschmelzen

Page 28: Algorithm   Engineering  „Schnelles Sortieren“

Generiereneines Weak-Heaps

Page 29: Algorithm   Engineering  „Schnelles Sortieren“

Sortierung

Page 30: Algorithm   Engineering  „Schnelles Sortieren“

Arrayeinbettung

Page 31: Algorithm   Engineering  „Schnelles Sortieren“

3 Fälle

Page 32: Algorithm   Engineering  „Schnelles Sortieren“

PseudoCode

Page 33: Algorithm   Engineering  „Schnelles Sortieren“

AnalyseΣ

Page 34: Algorithm   Engineering  „Schnelles Sortieren“

Engineering

Page 35: Algorithm   Engineering  „Schnelles Sortieren“

Quick-Heapsort

Page 36: Algorithm   Engineering  „Schnelles Sortieren“

Quick-Heapsort

ΣΣ

Page 37: Algorithm   Engineering  „Schnelles Sortieren“

Pseudo-Code

Page 38: Algorithm   Engineering  „Schnelles Sortieren“

Pseudo-Code (2)

Page 39: Algorithm   Engineering  „Schnelles Sortieren“

Pseudo-Code (3)

Page 40: Algorithm   Engineering  „Schnelles Sortieren“

Radix-Sort

Page 41: Algorithm   Engineering  „Schnelles Sortieren“

Radix-Exchange-Sort

Page 42: Algorithm   Engineering  „Schnelles Sortieren“

Beispiel

Page 43: Algorithm   Engineering  „Schnelles Sortieren“

UnterscheidenePräfixe

Page 44: Algorithm   Engineering  „Schnelles Sortieren“

Analyse

Page 45: Algorithm   Engineering  „Schnelles Sortieren“

Sortieren durch Fachverteilen

Page 46: Algorithm   Engineering  „Schnelles Sortieren“

Analyse

Page 47: Algorithm   Engineering  „Schnelles Sortieren“

Illustration

Page 48: Algorithm   Engineering  „Schnelles Sortieren“

Pseudo-Code (1)

Page 49: Algorithm   Engineering  „Schnelles Sortieren“

Pseudo-Code (2)

Page 50: Algorithm   Engineering  „Schnelles Sortieren“

Adaptives SortierenInversionen Inv(X) = {(i,j) | 1 <= i < j <= n und xi > xj}Ziel AE:1*n log (Inv(X)/n)+O(n)Wenn Inv(X) = O(n²) n log n + O(n)

Inversions-optimal:= Laufzeit O(n log (Inv(X)/n)+n)

InformationstheoretischeGrenze: Ω(n log (Inv(X)/n)+n)

Page 51: Algorithm   Engineering  „Schnelles Sortieren“

Kartesischer Baum Der kartesische Baum TF von F[1..n] ist ein geordneter „gewurzelter“

Baum mit n Knoten. Der kartesische Baum des leeren Feldes ist der

leere Baum. Sei k = min (1,n). Die Wurzel von TF ist markiert mit k, die Kinder

sind die kartesischen Bäume von F[1..k −1] und F[k+1..n] (wobei F[i..j] das leere

Feld ist, falls j < i).

Page 52: Algorithm   Engineering  „Schnelles Sortieren“

Konstruktion (a la wikipedia)Process the sequence values in left-to-right order, maintaining

the Cartesian tree of the nodes processed so far, in a structure that allows both upwards and downwards traversal of the tree.

To process each new value x, start at the node representing the value prior to x in the sequence and follow the path from this node to the root of the tree until finding a value y smaller than x. This node y is the parent of x, and the previous right child of y becomes the new left child of x.

The total time for this procedure is linear, because the time spent searching for the parent y of each new node x can be charged against the number of nodes that are removed from the rightmost path in the tree

Page 53: Algorithm   Engineering  „Schnelles Sortieren“

Levcopoulos–Petersson Algorithmus

Konstruiere Karteschen Baums für die Eingabe Initialisiere PQ mit der Wurzel des kartesischen Baumes Solange PQ nicht leer:

1. Finde und lösche den min. Wert x in PQ (DeleteMin)2. Gebe x aus3. Füge die Kinder von x im kartesischen Baum zu PQ hinzu (Insert)

Page 54: Algorithm   Engineering  „Schnelles Sortieren“

Zeit

Page 55: Algorithm   Engineering  „Schnelles Sortieren“

Vergleiche


Recommended