Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Sortieralgorithmen Sortieren von Arrays.

Ähnliche Präsentationen


Präsentation zum Thema: "Sortieralgorithmen Sortieren von Arrays."—  Präsentation transkript:

1 Sortieralgorithmen Sortieren von Arrays

2 Sortierverfahren Sortieren durch direktes Auswählen ‚Selection Sort‘
Sortieren durch direktes Einfügen ‚Insertion Sort‘ Sortieren durch direktes Austauschen ‚Bubble Sort‘ Sortieren durch Zerlegen ‚Quicksort‘

3 Selection Sort 1 alternative Bezeichnungen: Sortieren durch Austauschen, Sortieren durch Auswählen Idee – Suche zunächst das kleinste, danach das zweitkleinste Item usw. – Stelle damit sukzessiv eine sortierte Liste auf.

4 Selection Sort 2 Methode
– Wähle unter A[1], A[2], , A[N] das kleinste Item. – Vertausche A[1] mit diesem; damit hat es seinen endgültigen Platz. – Verfahre mit der Restliste A[2], , A[N] entsprechend usw.

5 Selection Sort 3 Programm
FOR i:=1 TO n-1 DO BEGIN „weise x das kleinste Element von a[i]..a[n] zu, weise seinen Index k zu“; „Vertausche a[i] und a[k]“ END.

6 Selection Sort 4 44 55 12 42 94 18 06 67 i=1 i=2 i=3 i=4 i=5 i=6 i=7
Anfangswerte 44 55 12 42 94 18 06 67 i=1 i=2 i=3 i=4 i=5 i=6 i=7

7 Selection Sort 5 Effizienzanalyse
Die Zahl C der Vergleiche der Schlüssel ist unabhängig von der ursprünglichen Ordnung: C = (n2–n)/2 Die Zahl M der Bewegungen ist mindestens M [min] = 3*(n-1) bei ursprünglich geordneten Schlüsseln, und höchstens M [max] = trunc(n2/4) + 3*(n-1), falls die Schlüssel ursprünglich in umgekehrter Reihenfolge sind. Im Mittel erhalten wir: M [mit] = n*(ln n + 0,57)

8 Insertion Sort 1 alternative Bezeichnung: Sortieren durch Einfügen
Idee – Beginne mit dem ersten Item als bereits sortierter Teil-Liste. – Ordne das erste Item der unsortierten Restliste in die sortierte Teilliste ein.

9 Insertion Sort 2 Methode
– Bilde mit A[1] eine erste sortierte Teil-Liste. – Füge A[2] darin so ein, daß die erweiterte Teil-Liste wieder sortiert ist. – Wenn A[1], A[2], , A[k] eine sortierte Teil-Liste sind, dann füge A[k+1] ein.

10 Insertion Sort 3 Programm
FOR i:=2 TO n DO BEGIN x:=a[i]; „füge x am entsprechenden Platz in a[1]..a[n] ein“ END.

11 Insertion Sort 4 44 55 12 42 94 18 06 67 i=2 i=3 i=4 i=5 i=6 i=7 i=8
Anfangswerte 44 55 12 42 94 18 06 67 i=2 i=3 i=4 i=5 i=6 i=7 i=8

12 Insertion Sort 5 Effizienzanalyse
Die Zahl C[i] der Vergleiche von Schlüsseln ist höchstens i-1 und somit – unter Annahme, dass alle Permutationen gleich wahrscheinlich sind – im Mittel i/2. Die Zahl M[i] der Bewegungen ist C[i]+2 (inkl. Marke): C [min] = n-1 M [min] = 3*(n-1) C [max] = ((n2 + n)/2) – 1 M [max] = (n2 + 3n-4)/2 C [mit] = (n2 + n-2)/4 M [mit] = (n2 + 9n-10)/4 Die kleinsten Zahlen kommen bei bereits geordneten Elementen vor; die schlimmsten Fälle treten ein, wenn die Elemente zu Beginn in umgekehrter Reihenfolge angeordnet sind (natürliches Verhalten).

13 Bubble Sort 1 alternative Bezeichnung: Idee
Sortieren durch lokales Vertauschen Idee – Durch Vertauschen zweier Nachbarn, die nicht in der richtigen Reihenfolge stehen, wird der Sortierzustand besser. – Mache das so oft, bis die Liste sortiert ist.

14 Bubble Sort 2 Methode – Durchlaufe die Liste von links nach rechts.
– Wenn dabei A[i] und A[i+1] in falscher Reihenfolge stehen, vertausche sie. – Wiederhole das solange bis die Liste sortiert ist.

15 Bubble Sort 3 44 55 12 42 94 18 06 67 i=2 i=3 i=4 i=5 i=6 i=7 i=8
Anfangswerte 44 55 12 42 94 18 06 67 i=2 i=3 i=4 i=5 i=6 i=7 i=8

16 Bubble Sort 4 Effizienzanalyse Zahl der Vergleiche: C = (n2 – n)/2
Zahl der Bewegungen: M [min] = 0 M [max] = 3*(n2 - n)/2 M [mit] = 3*(n2 - n)/4

17 Quicksort 1 alternative Bezeichnungen: Vertauschen über große Entfernungen, Partition Exchange Sort Idee – Divide et Impera-Prinzip: – Zerlegung in eine Liste mit allen "kleinen" und eine Liste mit allen "großen" Items – Sortiere beide Teil-Listen getrennt (rekursiv nach dem selben Prinzip) – Baue aus den Teilen wieder eine Gesamtliste zusammen

18 Quicksort 2 Methode – Wähle unter A[1], A[2], , A[N] ein Pivot-Element p aus. – Zerlege mit p die Liste in zwei Teil-Listen L1 und L2 – Liste L1 enthält nur Items A[i] < p – Liste L2 enthält nur Items A[i] > p

19 Quicksort 3 Methode (Fortsetzung)
– Nach der Zerlegung wird das Pivot-Element zwischen L1 und L2 gestellt. Es hat dort seinen endgültigen Platz erreicht. – Die beiden Teil-Listen werden rekursiv nach dem selben Verfahren sortiert. – Zur Zusammenfassung der Teil-Listen sind keine weiteren Maßnahmen nötig.

20 Quicksort 4 Wahl des Pivot-Elements p
– Wunsch: p so wählen, daß die Teil-Listen gleich groß werden. – häufige Methoden zur Wahl von p: ∗ letztes Item ∗ erstes Item ∗ zufällig gewähltes Item ∗ Median von drei Items, z.B. von A[1], A[N/2] und A[N]

21 Quicksort 5 Effizienzanalyse
Zahl der Vergleiche im günstigsten Fall: C = n*log(n) Zahl der Bewegungen im günstigsten Fall: M = (n*log(n )/6 Natürlich kann man nicht immer erwarten, immer das mittlere Element zu treffen (Wahrscheinlichkeit = 1/n). Bei zufälliger Wahl der Grenze ist die Leistung von Quicksort aber nur um den Faktor 2*ln(2) = 1,39 schlechter als im besten Fall!

22 Ein Vergleich der Sortiermethoden
Selection Sort C [mit] (n2–n)/2 M [mit] n*(ln n + 0,57) Insertion Sort (n2+n-2)/2 (n2 –9n -10)/4 Bubble Sort (n2-n)/2 (n2-n)*0,75 Quick n*log(n)*1,39 (n*log(n))/6

23 Sortieralgorithmen im Internet
Informatikseite von Andreas Rittershofer Oldenburger Lernprogramme zur Informatik (OLLI) Sortierverfahren MathPrism

24 Literatur Sedgewick, Robert: Algorithmen, Addison-Wesley
Wirth, Niklaus: Algorithmen und Datenstrukturen, B.G.Teubner, Stuttgart-Leipzig-Wiesbaden.


Herunterladen ppt "Sortieralgorithmen Sortieren von Arrays."

Ähnliche Präsentationen


Google-Anzeigen