Sortierverfahren Susanne Freitag.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Algorithmen und Datenstrukturen
8. Termin Teil B: Wiederholung Begriffe Baum
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Falls Algorithmen sich selbst rekursiv aufrufen, so kann ihr Laufzeitverhalten bzw. ihr Speicherplatzbedarf in der Regel durch eine Rekursionsformel (recurrence,
Schnelle Matrizenoperationen von Christian Büttner
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Kapitel 6: Klassifizierung von Sortiertechniken
3. Kapitel: Komplexität und Komplexitätsklassen
Kapitel 7. Sortier-Algorithmen
Kapitel 6. Suchverfahren
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
5. Sortier-Algorithmen Vorbemerkungen:
Synonyme: Stapel, Keller, LIFO-Liste usw.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Polymorphie (Vielgestaltigkeit)
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.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Halbzeit: Kurze Wiederholung
Sortieren vorsortierter Daten
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.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 9 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbä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.
Geometrisches Divide and Conquer
Externe Datenstruktur lineare Liste
Vortrag: Ingo Gensch, Mathias Reich am:
Bubbelsort und Quicksort Vortrag von Rolf Heitzenröder
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Mergesort Divide and Conquer
Computer Science Unplugged Sortiernetzwerke © Computer Science Unplugged canterbury.ac.nz von Tim Bell, Ian H. Witten und Mike Fellows Übersetzung:
Ideen der Informatik Suchen und Sortieren [Ordnung muss sein…]
Barbara Keller, Insertion Sort Hier wird anhand eines Beispiels mit Karten aufgezeigt, wie Insertion Sort funktionniert.
Rekursion mit Listen: Quicksort
4 Sortierverfahren 4.1 Einführung 4.2 Naive Sortierverfahren
Merge-Sort und Binäres Suchen /10D. Haehn Populäres algorithmisches Lösungsverfahren Populäres algorithmisches Lösungsverfahren Divide: Problem.
Computational Thinking Suchen und Sortieren [Ordnung muss sein…]
Algorithmen Gruppe 4.
Sortieralgorithmen Sortieren von Arrays.
Effiziente Algorithmen
Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
Effiziente Algorithmen
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Einführung in die Programmierung
Komplexität von Algorithmen
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.
Aufgaben zur Kombinatorik
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Sortiernetzwerke1 Seminar über Algorithmen SS 2005 von Arash Sarkohi und Christian Bunse.
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.
Pointer. Grundsätzliches: Im Arbeitsspeicher werden Daten gespeichert. Um auf die Daten eindeutig zugreifen zu können, werden diesen Daten Adressen zugeordnet.
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Allgemeine Formulierung des Suchproblems
Bubblesort. Inhaltsverzeichnis Allgemeines Aufbau Prinzip Beispiel.
Suchen und Sortieren.
Sortieren interaktiv.
Laufzeitverhalten beim Sortieren
Sortieren interaktiv.
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
 Präsentation transkript:

Sortierverfahren Susanne Freitag

Vorkenntnisse der Schüler (12. Klasse GK) Begrifflichkeiten: Algorithmus, Rekursion, usw. Programmiergrundkenntnisse: if-Konstrukt, Schleifen, Methoden- bzw. Prozeduraufrufe, …. Datentypen: native Datentypen, Arrays, Listen, u. Ä.

Unterrichtsentwurf - Einführung in Sortieralgorithmen - Motivationsaufbau es werden 4 Kleingruppen gebildet und jeder Gruppe wird ein unvollständiger Satz eines Kartenspiels zugeteilt jede Gruppe erhält die Beschreibung eines Sortieralgorithmus demzufolge das Kartenspiel sortiert werden soll (von 2 bis As, gleiche Werte in der Reihenfolge Pik, Kreuz, Herz, Karo) die Aufgabe der Gruppen ist es, die Karten schnellstmöglich zu sortieren, wobei es 4 verschiedene Anordnungen gibt die zum Lösen der Aufgabe jeweils benötigten Zeiten werden an der Tafel notiert

Die 4 Anordnungen Anordnung 1: die Karten liegen gemischt vor, Sortieralgorithmus Selection Sort Anordnung 2: die Karten liegen fast sortiert vor, Sortieralgorithmus Selection Sort Anordnung 3: die Karten liegen gemischt vor, Sortieralgorithmus Insertion Sort Anordnung 4: die Karten liegen fast sortiert vor, Sortieralgorithmus Insertion Sort

Sortieranweisungen Selection Sort: Sucht die niedrigste Karte aus dem Stapel heraus und legt sie vor euch, sucht dann die niedrigste Karte aus dem restlichen Stapel usw. bis der Stapel fertig sortiert auf dem Tisch liegt. Insertion Sort: Nehmt die oberste Karte vom Stapel weg. Vergleicht dann jeweils die oberste Karte des noch unsortierten Stapels mit dem bereits sortierten Teilstapel und fügt sie an der richtigen Stelle ein.

Mögliche Variationen Je nach Kursgröße kann es noch eine weitere Gruppe geben, die einen Quasi-Mergesort durchführt - Anweisung hierzu beispielsweise: Teilt den Stapel zunächst in vier Stapel (Pik-Kreuz- Herz-Karo), sortiert jeden dieser Stapel in sich aufsteigend und fügt die vier Stapel dann zu einem zusammen. Wenn die Kursgröße eine Einteilung in 8 Kleingruppen zuläßt, kann man zusätzlich noch die Größe der Kartenstapel variieren.

Allgemeines Sortieren: der Prozess des Anordnens einer gegebenen Menge von Objekten in einer bestimmten Ordnung. Die Ordnung hängt von der Art der Objekte ab. Das Sortieren von Daten nach bestimmten Kriterien gehört zu den wichtigsten Problemen der Informatik. Sortierte Daten erleichtern Suche erheblich Bei großen Datenmengen ist es wichtig, daß effiziente Algorithmen zur Verfügung stehen. Die verschiedenen Algorithmen haben alle Vor- und Nachteile, je nachdem auf welche Daten man sie anwendet. So kann je nach Datenbestand der „schlechteste“ Algorithmus am schnellsten fertig sein. Stichwort: Effizienz eines Sortieralgorithmus. Beispiele für sortierte Mengen im Alltag: Telefonbuch, Lexika, Wörterbücher

Erläuterung der Sortieralgorithmen Folgende Sortieralgorithmen sollen vorgestellt werden: Selection Sort & Insertion Sort (kurze Erläuterung anhand der Vorgehensweise beim Kartenspiel) Bubble Sort Quick Sort Merge Sort

Selection Sort Prinzip: das kleinste Element eines Feldes suchen, und dieses dann mit dem ersten Element tauschen Zu Beginn sucht man im ganzen Feld nach dem kleinsten Element und tauscht mit dem ersten Element. Danach sucht man im Restfeld ohne erstes Element nach dem kleinsten Element und tauscht mit dem ersten Element des Restfeldes. Dies wiederholt man, bis das zweitgrößte Element an den korrekten Platz gebracht wurde.

Selection Sort (Beispiel) 5 37 13 21 2 14 unsortiert 2 37 13 21 5 14 s. unsortiert 2 5 13 21 37 14 sortiert unsortiert

Insertion Sort Prinzip: das erste Element eines unsortierten Feldes wird an der richtigen Stelle in ein sortiertes Feld eingefügt Zunächst besteht der sortierte Teil nur aus dem ersten Element. Das erste Element der unsortierten Folge wird nun solange mit dem vorherigen getauscht, solange es kleiner als das vorherige ist.  Dies wird solange wiederholt, bis das gesamte Feld sortiert vorliegt.

Insertion Sort (Beispiel) 5 37 13 21 2 14 s. unsortiert 5 37 13 21 2 14 sortiert unsortiert 5 13 37 21 2 14 sortiert unsortiert

Bubble Sort Prinzip: das Feld wird durchlaufen und dabei so getauscht, dass das größte bzw. kleinste Element an der richtigen Stelle steht. Beginn am Ende des Feldes. Tausch benachbarter Elemente, wenn ein Element kleiner als sein Vorgänger ist. Das kleinste Element steht nach einem Durchlauf am Anfang des Feldes. Wiederholung des Vorgangs ohne Einbezug des bereits sortierten Feldanteils bis das Feld vollständig sortiert vorliegt. Die Sortierung wird beendet sobald kein Tausch während eines Durchlaufs stattgefunden hat.

Bubble Sort (Beispiel) 5 37 13 21 2 14 unsortiert 2 5 37 13 21 14 s. unsortiert 2 5 13 37 14 21 sortiert unsortiert

Quick Sort Prinzip: „Divide and Conquer“, also Sortieren durch Zerlegen in einzelne Teilfolgen. Rekursiver Sortieralgorithmus. Zunächst Wahl eines willkürlichen Vergleichselementes (Wert in der Mitte der Folge). Zwei Zeiger durchlaufen das Feld von links bzw. rechts. Außerdem muß man aufgrund des rekursiven Aufbaus die Anfangs- und Endstelle des Felds angeben. Der linke Zeiger läuft vom Anfang aus bis ein Element gefunden wird, das größer oder gleich dem Vergleichselement ist. Der rechte Zeiger läuft vom Ende aus bis ein Element gefunden wird, das kleiner oder gleich dem Vergleichselement ist.

Quick Sort (Fortsetzung) Zeigt der linke Zeiger auf ein größeres Element als der rechte, so werden beide Elemente getauscht. Dies wiederholt man, bis die beiden Zeiger aneinander vorbeigelaufen sind. Man erhält zwei Folgen, eine kleiner und eine größer als das Vergleichselement. Nun ruft man Quick Sort mit den Teilfolgen rekursiv wieder auf. Als Grenzen übergibt man den Feldanfang und den rechten Zeiger sowie den linken Zeiger und das Feldende. Die Teilfolgen werden wie beschrieben zu neuen Teilfolgen sortiert und wieder geteilt. Die Abbruchbedingung ist erreicht, wenn die Teilfolge nur noch aus einem Element besteht. Das Feld wird nun sortiert wieder zusammengesetzt.

Quick Sort (Beispiel) 5 37 13 21 2 l v r 5 37 13 21 2 l v r l, v

Merge Sort Prinzip: Das Feld wird zu Beginn rekursiv in einzelne Teilfelder zerlegt, bis jedes Feld nur noch die Größe von einem Element hat. Rekursiver Sortieralgorithmus. Einelementige Teilfelder sind stets sortiert. Nun werden je zwei Teilfolgen zusammen in ein Hilfsfeld sortiert, indem beide Teilfolgen von vorne nach hinten durchlaufen werden und das jeweils kleinere Element in das Hilfsfeld übertragen wird. Dieser Vorgang wird solange wiederholt bis alle Teilfolgen (Hilfsfolgen) zusammengemischt vorliegen. Das Feld ist nun sortiert.

Merge Sort (Beispiel) s. Tafel

Diskussion: Welche Variablen haben Einfluß auf die Sortiergeschwindigkeit? Anzahl der Vergleiche Anzahl der Tauschvorgänge Sortierte vs. unsortierte vs. umgekehrt sortierte Felder Bsp.: Vorsortierung beim Insertion Sort sehr hilfreich, beim Selection Sort aber egal Größe des zu sortierenden Feldes Parallelisierbarkeit, Bsp.: Geschwindigkeit des Merge Sort hängt ab von der Anzahl der Mitsortierer Fazit: Oft liefern verschiedene Algorithmen das gleiche Ergebnis, benötigen dafür aber unterschiedlich lange Zeit.

Simulation durch Programm Programm, das den Ablauf der Sortierung verdeutlicht und dabei die Anzahl der Vergleiche sowie die Anzahl der Tauschoperationen zählt Geschwindigkeitsunterschiede gut sichtbar Menge und Art der Daten einstellbar

Zeitwertetabelle (beispielhaft) Fall 1: zufällig sortierte Felder 1000 5000 10000 100000 Bubble 20 210 1041 241557 Quick 10 80 Merge 130

Zeitwertetabelle Fortsetzung Fall 2: fast sortierte Felder 1000 5000 10000 100000 Bubble 20 200 811 - Quick 10 35 Merge 120

Zeitwertetabelle Fortsetzung Fall 3: umgekehrt sortierte Felder 1000 5000 10000 100000 Bubble 30 610 2460 - Quick 10 50 Merge 20 120

Laufzeitverhalten Da Speicher und Rechenzeit begrenzt sind, ist die Effizienz eines Algorithmus wichtig. Die sog. O-Notation ermöglicht eine Abschätzung des Verhaltens eines Algorithmus gegenüber einer variablen Problemgröße (hier: Menge der zu sortierenden Daten) und damit einen Vergleich der verschiedenen Sortierverfahren bei einer konkreten Problemgröße. So kann ein Algorithmus ggf. für die Lösung eines Problems verworfen werden. Bsp.: Liegt ein Algorithmus in O(n²), dann ist bei einem doppelt so großen Problem mit einer vierfachen Laufzeit zu rechnen.

Alternativen Den von den Schülern erstellten Code in ein Benchmark-Programm einbinden und die Laufzeit für vorgefertigte Datensätze messen. Möglicherweise in Form eines Wettbewerbs, welcher Schüler den schnellsten Sortieralgorithmus programmiert hat.

Hausaufgaben Erstellen von Code für einen beliebig wählbaren Sortieralgorithmus Überlege welches Best- und Worstcase-Szenarien für die vorgestellten Sortierverfahren sind.