Sortieralgorithmen Sortieren von Arrays.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Algorithmen und Datenstrukturen
Eine dynamische Menge, die diese Operationen unterstützt,
Vorlesung Programmieren II
DNA-Array oder DNA-Chip
DNA-Array oder DNA-Chip
Sortieren I - Bubblesort -
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kapitel 6: Klassifizierung von Sortiertechniken
G.Heyer Algorithmen und Datenstrukturen II 1 Algorithmen und Datenstrukturen II Wintersemester 2000 / 2001 Prof. Dr. Gerhard Heyer Institut für Informatik.
Kapitel 7. Sortier-Algorithmen
Kapitel 6. Suchverfahren
5. Sortier-Algorithmen Vorbemerkungen:
Synonyme: Stapel, Keller, LIFO-Liste usw.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
WS Algorithmentheorie 05 - Treaps Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (08 - Einfache Sortierverfahren) Prof. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Halbzeit: Kurze Wiederholung
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Sortieren vorsortierter Daten
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (24 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (21 – Kürzeste Wege) T. Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 - AVL-Bäume: Entfernen, Bruder-Bäume) Prof. Th. Ottmann.
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (09 - Weitere Sortierverfahren) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmen und Datenstrukturen
Sortierverfahren Susanne Freitag.
Diskrete Mathematik I Vorlesung 9b AVL-Baum, Algorithmen.
Externe Datenstruktur lineare Liste
Vortrag: Ingo Gensch, Mathias Reich am:
Bubbelsort und Quicksort Vortrag von Rolf Heitzenröder
Ideen der Informatik Suchen und Sortieren [Ordnung muss sein…]
Rekursion mit Listen: Quicksort
4 Sortierverfahren 4.1 Einführung 4.2 Naive Sortierverfahren
Computational Thinking Suchen und Sortieren [Ordnung muss sein…]
Algorithmen Gruppe 4.
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Effiziente Algorithmen
Sortieren und Suchen IFB 2002 Daniel Jonietz.
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz.
1.6 Die Datenstruktur Stapel Ein Stapel (Stack) ist ein Sonderfall einer Liste. Die Elemente werden nach dem Prinzip LIFO (Last In First Out) angefügt.
Sortieralgorithmen Greedy Sortieren: Sortieren durch Auswahl, Einfügen und Austauschen Divide-and-Conquer-Sortieren: Quicksort und merge sort Foliensatz.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Geoinformation II 6. Sem. Vorlesung Mai 2000 Konstruktion des Voronoi-Diagramms.
Selection-Sort Insertion-Sort Bubble-Sort.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Rekursion-
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Voronoi-Diagramme.
M a r c – o l i v e r p a h l Informatik II – Kapitel 12 „Sortier-Algorithmen“ Zusammenfassung des Kapitel 12 Küchlin, Weber, Einführung in die Informatik,
Binärbäume.
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
Allgemeine Formulierung des Suchproblems
Bubblesort. Inhaltsverzeichnis Allgemeines Aufbau Prinzip Beispiel.
Suchen und Sortieren.
Sortieren interaktiv.
Sortieren interaktiv.
 Präsentation transkript:

Sortieralgorithmen Sortieren von Arrays

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‘

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.

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.

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.

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

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)

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.

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.

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.

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

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).

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.

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.

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

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

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

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

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.

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]

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!

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

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

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