Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Sortierverfahren Susanne Freitag. Vorkenntnisse der Schüler (12. Klasse GK) Begrifflichkeiten: Algorithmus, Rekursion, usw. Begrifflichkeiten: Algorithmus,

Ähnliche Präsentationen


Präsentation zum Thema: "Sortierverfahren Susanne Freitag. Vorkenntnisse der Schüler (12. Klasse GK) Begrifflichkeiten: Algorithmus, Rekursion, usw. Begrifflichkeiten: Algorithmus,"—  Präsentation transkript:

1 Sortierverfahren Susanne Freitag

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

3 Unterrichtsentwurf - Einführung in Sortieralgorithmen - Motivationsaufbau Motivationsaufbau es werden 4 Kleingruppen gebildet und jeder Gruppe wird ein unvollständiger Satz eines Kartenspiels zugeteilt 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) 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 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 zum Lösen der Aufgabe jeweils benötigten Zeiten werden an der Tafel notiert

4 Die 4 Anordnungen Anordnung 1: die Karten liegen gemischt vor, Sortieralgorithmus Selection Sort Anordnung 1: die Karten liegen gemischt vor, Sortieralgorithmus Selection Sort Anordnung 2: die Karten liegen fast sortiert 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 3: die Karten liegen gemischt vor, Sortieralgorithmus Insertion Sort Anordnung 4: die Karten liegen fast sortiert vor, Sortieralgorithmus Insertion Sort Anordnung 4: die Karten liegen fast sortiert vor, Sortieralgorithmus Insertion Sort

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

6 Mögliche Variationen Je nach Kursgröße kann es noch eine weitere Gruppe geben, die einen Quasi-Mergesort durchführt 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. Wenn die Kursgröße eine Einteilung in 8 Kleingruppen zuläßt, kann man zusätzlich noch die Größe der Kartenstapel variieren.

7 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. 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. Das Sortieren von Daten nach bestimmten Kriterien gehört zu den wichtigsten Problemen der Informatik. Sortierte Daten erleichtern Suche erheblich Sortierte Daten erleichtern Suche erheblich Bei großen Datenmengen ist es wichtig, daß effiziente Algorithmen zur Verfügung stehen. 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. 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 Beispiele für sortierte Mengen im Alltag: Telefonbuch, Lexika, Wörterbücher

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

9 Selection Sort Prinzip: das kleinste Element eines Feldes suchen, und dieses dann mit dem ersten Element tauschen 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. 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. 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. Dies wiederholt man, bis das zweitgrößte Element an den korrekten Platz gebracht wurde.

10 Selection Sort (Beispiel) unsortiert s.unsortiert sortiertunsortiert

11 Insertion Sort Prinzip: das erste Element eines unsortierten Feldes wird an der richtigen Stelle in ein sortiertes Feld eingefügt 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. 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. 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. Dies wird solange wiederholt, bis das gesamte Feld sortiert vorliegt.

12 Insertion Sort (Beispiel) sortiertunsortiert s.unsortiert sortiertunsortiert

13 Bubble Sort Prinzip: das Feld wird durchlaufen und dabei so getauscht, dass das größte bzw. kleinste Element an der richtigen Stelle steht. 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. 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. 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. Die Sortierung wird beendet sobald kein Tausch während eines Durchlaufs stattgefunden hat.

14 Bubble Sort (Beispiel) sortiertunsortiert s.unsortiert unsortiert

15 Quick Sort Prinzip: Divide and Conquer, also Sortieren durch Zerlegen in einzelne Teilfolgen. Rekursiver Sortieralgorithmus. 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. 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. 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.

16 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. 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. 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. Die Abbruchbedingung ist erreicht, wenn die Teilfolge nur noch aus einem Element besteht. Das Feld wird nun sortiert wieder zusammengesetzt.

17 Quick Sort (Beispiel) lvr lvr l, v r rlv

18 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. 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. 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. 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. Dieser Vorgang wird solange wiederholt bis alle Teilfolgen (Hilfsfolgen) zusammengemischt vorliegen. Das Feld ist nun sortiert.

19 Merge Sort (Beispiel) s. Tafel s. Tafel

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

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

22 Zeitwertetabelle (beispielhaft) Fall 1: zufällig sortierte Felder Fall 1: zufällig sortierte Felder Bubble Quick Merge

23 Zeitwertetabelle Fortsetzung Fall 2: fast sortierte Felder Fall 2: fast sortierte Felder Bubble Quick Merge

24 Zeitwertetabelle Fortsetzung Fall 3: umgekehrt sortierte Felder Fall 3: umgekehrt sortierte Felder Bubble Quick Merge

25 Laufzeitverhalten Da Speicher und Rechenzeit begrenzt sind, ist die Effizienz eines Algorithmus wichtig. 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. 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. 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.

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

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


Herunterladen ppt "Sortierverfahren Susanne Freitag. Vorkenntnisse der Schüler (12. Klasse GK) Begrifflichkeiten: Algorithmus, Rekursion, usw. Begrifflichkeiten: Algorithmus,"

Ähnliche Präsentationen


Google-Anzeigen