Algorithmen und Datenstrukturen

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Vorlesung Programmieren II
DNA-Array oder DNA-Chip
DNA-Array oder DNA-Chip
GIN2 – 2. Vorlesung, SS04 Prof. Dr. Wolfram Conen
Kapitel 6: Klassifizierung von Sortiertechniken
Kapitel 7. Sortier-Algorithmen
5. Sortier-Algorithmen Vorbemerkungen:
Nach dem Buch „Garantiert Schreiben lernen“ von Gabriele L. Rico
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Felder sortieren. Aufgabe: Die Zahlen eines Feldes sollen der Größe (zuerst die kleinste Zahl) nach sortiert werden.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (23 – Sortieren vorsortierter Daten) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (08 - Einfache Sortierverfahren) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Bestimmung des Next-Arrays im KMP-Algorithmus
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 9 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen 09 - Weitere Sortierverfahren Heapsort-Nachtrag Prof. Th. Ottmann.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (09 - Weitere Sortierverfahren) Prof. Th. Ottmann.
Sortierverfahren Susanne Freitag.
Perl-Grundlagen Teile der Präsentation von A. Grupp,
PKJ 2005/1 Stefan Dissmann Zusammenfassung der Vorwoche Variable stehen für (einen) Wert, der sich im Programmablauf ändern kann. Variablen besitzen einen.
Externe Datenstruktur lineare Liste
Minimum Spanning Tree: MST
Vortrag: Ingo Gensch, Mathias Reich am:
Bubbelsort und Quicksort Vortrag von Rolf Heitzenröder
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Heute: Scherenzange zeichnen
C++ LEDA SWP SS 08Herresthal & Schepers1 Softwarepraktikum C++ LEDA Parallelisierung - Partitionierung - Zusammenführung
Computer Science Unplugged Sortiernetzwerke © Computer Science Unplugged canterbury.ac.nz von Tim Bell, Ian H. Witten und Mike Fellows Übersetzung:
Kakuro Regeln und Strategien
Muster zum Erstellen einer Abfrage mit der interaktiven Datenbank
Anlegen von Ordnern, speichern und Öffnen von Bildern und Briefen
Ich möchte gerne mehrere Bilder auf ein Folie
Barbara Keller, Insertion Sort Hier wird anhand eines Beispiels mit Karten aufgezeigt, wie Insertion Sort funktionniert.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
4 Sortierverfahren 4.1 Einführung 4.2 Naive Sortierverfahren
Algorithmen Gruppe 4.
Sortieralgorithmen Sortieren von Arrays.
Effiziente Algorithmen

Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
Effiziente Algorithmen
Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz.
wenn ich auf eine bestimmte Stelle auf einer Folie klicke
FIFA eSports Event EA SPORTS Bar
Die Hilfe zu ... Der Bildschirmaufbau Das Inhaltefenster
Hilfe Dokumente.
Grundlegende Sortieralgorithmen
Start Ziel.
PHP: Operatoren und Kontrollstrukturen
Programmieren in C Sortieren, Suchen
Disziplin 3: Cycle. Man geht aus von zwei 3er-Stapeln und einem 6er-Stapel
Mit vielen bunten Farben
Grundlagen von PowerPoint
Sortieralgorithmen Greedy Sortieren: Sortieren durch Auswahl, Einfügen und Austauschen Divide-and-Conquer-Sortieren: Quicksort und merge sort Foliensatz.
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-
Mithilfe der Microsoft Excel Datensortierung können z.B. lange und ungeordnete Listen hilfreich aufsteigend oder absteigend sortiert werden.
Binärbäume.
Sortierverfahren Mit VB 2010 express edition JBS Tr, info Q1.
Allgemeine Formulierung des Suchproblems
Arbeiten mit WordSmith 4. Inhalt 1. Arbeiten mit der Funktion Wortliste (im getaggten Korpus) 1. Arbeiten mit der Funktion Wortliste (im getaggten Korpus)
Bubblesort. Inhaltsverzeichnis Allgemeines Aufbau Prinzip Beispiel.
Suchen und Sortieren.
Sortieren interaktiv.
Sortieren interaktiv.
 Präsentation transkript:

Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens

Sortieralgorithmen Um die Datensätze eines Datenbestands in eine aufsteigend oder absteigend sortierte Reihenfolge zu bringen, wurden eine Reihe von verschiedenen Verfahren entwickelt. Die Wichtigsten werden im Folgenden dargestellt.

Sortieralgorithmen Selection Sort Bubble Sort Insertion Sort Quick Sort

Selection Sort Sortieren durch direktes auswählen. Verfahren Finde das kleinste Element im Datenbestand und tausche es mit dem Element an Position 1. Finde das zweit-kleinste Element und tausche es mit Pos. 2. Finde des dritt-kleinste Element und tausche es mit Pos. 3. usw.

Selection Sort 16 7 12 14 2 11 4 13 15 0 8 1 17 3 18 5 9 10 19 6 0 7 12 14 2 11 4 13 15 16 8 1 17 3 18 5 9 10 19 6 0 1 12 14 2 11 4 13 15 16 8 7 17 3 18 5 9 10 19 6 0 1 2 14 12 11 4 13 15 16 8 7 17 3 18 5 9 10 19 6 0 1 2 3 12 11 4 13 15 16 8 7 17 14 18 5 9 10 19 6 0 1 2 3 4 11 12 13 15 16 8 7 17 14 18 5 9 10 19 6 0 1 2 3 4 5 12 13 15 16 8 7 17 14 18 11 9 10 19 6 0 1 2 3 4 5 6 13 15 16 8 7 17 14 18 11 9 10 19 12 0 1 2 3 4 5 6 7 15 16 8 13 17 14 18 11 9 10 19 12 0 1 2 3 4 5 6 7 8 16 15 13 17 14 18 11 9 10 19 12 0 1 2 3 4 5 6 7 8 9 15 13 17 14 18 11 16 10 19 12 0 1 2 3 4 5 6 7 8 9 10 13 17 14 18 11 16 15 19 12 0 1 2 3 4 5 6 7 8 9 10 11 17 14 18 13 16 15 19 12 0 1 2 3 4 5 6 7 8 9 10 11 12 14 18 13 16 15 19 17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 18 14 16 15 19 17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 18 16 15 19 17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 18 19 17 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 19 18 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Sortieralgorithmen Selection Sort Bubble Sort Insertion Sort Quick Sort

Bubble Sort Durchlaufe immer wieder die zu sortierenden Daten und betrachte benachbarte Elemente. Steht ein größeres Datum vor einem kleineren, so vertausche beide miteinander. Dies wird solange wiederholt, bis bei einem Durchlauf keine Vertauschung mehr erforderlich war.

Bubble Sort 19 11 18 17 5 1 9 10 6 8 2 16 15 12 4 7 3 14 13 0 11 18 17 5 1 9 10 6 8 2 16 15 12 4 7 3 14 13 0 19 11 17 5 1 9 10 6 8 2 16 15 12 4 7 3 14 13 0 18 19 11 5 1 9 10 6 8 2 16 15 12 4 7 3 14 13 0 17 18 19 5 1 9 10 6 8 2 11 15 12 4 7 3 14 13 0 16 17 18 19 1 5 9 6 8 2 10 11 12 4 7 3 14 13 0 15 16 17 18 19 1 5 6 8 2 9 10 11 4 7 3 12 13 0 14 15 16 17 18 19 1 5 6 2 8 9 10 4 7 3 11 12 0 13 14 15 16 17 18 19 1 5 2 6 8 9 4 7 3 10 11 0 12 13 14 15 16 17 18 19 1 2 5 6 8 4 7 3 9 10 0 11 12 13 14 15 16 17 18 19 1 2 5 6 4 7 3 8 9 0 10 11 12 13 14 15 16 17 18 19 1 2 5 4 6 3 7 8 0 9 10 11 12 13 14 15 16 17 18 19 1 2 4 5 3 6 7 0 8 9 10 11 12 13 14 15 16 17 18 19 1 2 4 3 5 6 0 7 8 9 10 11 12 13 14 15 16 17 18 19 1 2 3 4 5 0 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 2 3 4 0 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 2 3 0 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 2 0 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 1 0 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Sortieralgorithmen Selection Sort Bubble Sort Insertion Sort Quick Sort

Insertion Sort Insertion-Sort funktioniert wie das Einsortieren von Spielkarten von einem Stapel in die Hand. Man nimmt einfach Karte für Karte vom Stapel und sortiert sie ein, indem man den Kartenwert mit allen schon in der Hand befindlichen Karten (von rechts nach links) vergleicht.

Insertion Sort 3 8 10 19 16 1 0 12 13 18 7 9 5 2 6 14 11 17 15 4 3 8 10 16 19 1 0 12 13 18 7 9 5 2 6 14 11 17 15 4 1 3 8 10 16 19 0 12 13 18 7 9 5 2 6 14 11 17 15 4 0 1 3 8 10 16 19 12 13 18 7 9 5 2 6 14 11 17 15 4 0 1 3 8 10 12 16 19 13 18 7 9 5 2 6 14 11 17 15 4 0 1 3 8 10 12 13 16 19 18 7 9 5 2 6 14 11 17 15 4 0 1 3 8 10 12 13 16 18 19 7 9 5 2 6 14 11 17 15 4 0 1 3 7 8 10 12 13 16 18 19 9 5 2 6 14 11 17 15 4 0 1 3 7 8 9 10 12 13 16 18 19 5 2 6 14 11 17 15 4 0 1 3 5 7 8 9 10 12 13 16 18 19 2 6 14 11 17 15 4 0 1 2 3 5 7 8 9 10 12 13 16 18 19 6 14 11 17 15 4 0 1 2 3 5 6 7 8 9 10 12 13 16 18 19 14 11 17 15 4 0 1 2 3 5 6 7 8 9 10 12 13 14 16 18 19 11 17 15 4 0 1 2 3 5 6 7 8 9 10 11 12 13 14 16 18 19 17 15 4 0 1 2 3 5 6 7 8 9 10 11 12 13 14 16 17 18 19 15 4 0 1 2 3 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

Sortieralgorithmen Selection Sort Bubble Sort Insertion Sort Quick Sort

Quick Sort Einer der am häufigsten verwendeten Sortieralgorithmen ist Quick Sort. Die eigentliche Idee stammt aus dem Jahr 1960 von C.A.R. Hoare.

Quick Sort Die Idee zu Quick Sort kam bei einem Projekt zur mechanischer Übersetzung Russisch -> Englisch Wörter auf Magnetband gespeichert, schnellerer Zugriff -> Sortierung Hoare hält autmat. Übersetzung für unpraktisch: Nebenprodukt Quick Sort Quick Sort ist ein „Abfallprodukt“

Quick Sort Quick Sort arbeitet nach dem “Teile und Herrsche“ Prinzip. Ein Feld wird dabei in zwei Teile zerlegt, die dann unabhängig voneinander sortiert werden.

Quick Sort Es wird ein Element T ausgewählt, welches durch die Funktion partition() an die richtige Stelle in der sortierten Reihenfolge gesetzt wird. Gleichzeitig sorgt partition() dafür, dass links von T nur kleinere (gleiche) und rechts nur größere (gleiche) Elemente stehen. (Diese Bereiche sind noch nicht sortiert!) Anschließend wird die Prozedur jeweils auf das linke und rechte Teilfeld angewendet.

Quick Sort

Quick Sort Die Schwierigkeit besteht nun in der Zerlegung des Feldes.  Funktion partition(…) Dabei muß eine Umordnung des Feldes vorgenommen werden, so daß folgende Bedingungen erfüllt sind: Das Element array[p] befindet sich am richtigen Index p im Feld. Alle Elemente array[0] bis array[p-1] sind kleiner oder gleich als array[p]. Alle Elemente array[p+1] bis array[n-1] sind größer oder gleich als array[p].

Quick Sort Zu Beginn wähle man zwei Indizes i=l+1 und j=r und das erste Element im Feld als Vergleichswert key=array[l]. In einer Schleife erhöhe man i bis das Feldelement array[i]>key ist. Dieses Feldelement gehört in die rechte Hälfte des Feldes. Alle Elemente der rechten Hälfte sollen größer key sein. In einer Schleife verringere man j bis das Feldelement array[j]<key ist. Dieses Feldelement gehört in die linke Hälfte des Feldes. Alle Elemente der linken Hälfte sollen kleiner key sein. Sollte i>=j sein beende die Schleife. (Gehe zu 7.) Man vertausche die Elemente array[i] und array[j]. Wiederhole alles ab Punkt 2. Zum Schluß vertausche man das erste Element im Feld (key) mit array[j]. Damit sind alle obigen Bedingungen erfüllt.