Sortierverfahren Susanne Freitag. Vorkenntnisse der Schüler (12. Klasse GK) Begrifflichkeiten:...
-
Upload
kunibert-nabers -
Category
Documents
-
view
107 -
download
0
Transcript of Sortierverfahren Susanne Freitag. Vorkenntnisse der Schüler (12. Klasse GK) Begrifflichkeiten:...
Vorkenntnisse der Schüler Vorkenntnisse der Schüler (12. Klasse GK)(12. Klasse GK)
Begrifflichkeiten: Algorithmus, Begrifflichkeiten: Algorithmus, Rekursion, usw.Rekursion, usw.
Programmiergrundkenntnisse: if-Programmiergrundkenntnisse: if-Konstrukt, Schleifen, Methoden- Konstrukt, Schleifen, Methoden- bzw. Prozeduraufrufe, ….bzw. Prozeduraufrufe, ….
Datentypen: native Datentypen, Datentypen: native Datentypen, Arrays, Listen, u. Ä.Arrays, Listen, u. Ä.
UnterrichtsentwurfUnterrichtsentwurf- - Einführung in Einführung in
Sortieralgorithmen -Sortieralgorithmen - MotivationsaufbauMotivationsaufbau
es werden 4 Kleingruppen gebildet und jeder Gruppe es werden 4 Kleingruppen gebildet und jeder Gruppe wird ein unvollständiger Satz eines Kartenspiels wird ein unvollständiger Satz eines Kartenspiels zugeteiltzugeteilt
jede Gruppe erhält die Beschreibung eines jede Gruppe erhält die Beschreibung eines Sortieralgorithmus demzufolge das Kartenspiel Sortieralgorithmus demzufolge das Kartenspiel sortiert werden soll (von 2 bis As, gleiche Werte in sortiert werden soll (von 2 bis As, gleiche Werte in der Reihenfolge Pik, Kreuz, Herz, Karo)der Reihenfolge Pik, Kreuz, Herz, Karo)
die Aufgabe der Gruppen ist es, die Karten die Aufgabe der Gruppen ist es, die Karten schnellstmöglich zu sortieren, wobei es 4 schnellstmöglich zu sortieren, wobei es 4 verschiedene Anordnungen gibtverschiedene Anordnungen gibt
die zum Lösen der Aufgabe jeweils benötigten Zeiten die zum Lösen der Aufgabe jeweils benötigten Zeiten werden an der Tafel notiertwerden an der Tafel notiert
Die 4 AnordnungenDie 4 Anordnungen
Anordnung 1:Anordnung 1: die Karten liegen gemischt die Karten liegen gemischt vor, Sortieralgorithmus Selection Sortvor, Sortieralgorithmus Selection Sort
Anordnung 2:Anordnung 2: die Karten liegen fast die Karten liegen fast sortiert vor, Sortieralgorithmus Selection sortiert vor, Sortieralgorithmus Selection SortSort
Anordnung 3:Anordnung 3: die Karten liegen gemischt die Karten liegen gemischt vor, Sortieralgorithmus Insertion Sortvor, Sortieralgorithmus Insertion Sort
Anordnung 4:Anordnung 4: die Karten liegen fast die Karten liegen fast sortiert vor, Sortieralgorithmus Insertion sortiert vor, Sortieralgorithmus Insertion SortSort
SortieranweisungenSortieranweisungen
Selection Sort:Selection Sort: Sucht die niedrigste Karte Sucht die niedrigste Karte aus dem Stapel heraus und legt sie vor aus dem Stapel heraus und legt sie vor euch, sucht dann die niedrigste Karte aus euch, sucht dann die niedrigste Karte aus dem restlichen Stapel usw. bis der Stapel dem restlichen Stapel usw. bis der Stapel fertig sortiert auf dem Tisch liegt.fertig sortiert auf dem Tisch liegt.
Insertion Sort:Insertion Sort: Nehmt die oberste Karte Nehmt die oberste Karte vom Stapel weg. Vergleicht dann jeweils die vom Stapel weg. Vergleicht dann jeweils die oberste Karte des noch unsortierten Stapels oberste Karte des noch unsortierten Stapels mit dem bereits sortierten Teilstapel und mit dem bereits sortierten Teilstapel und fügt sie an der richtigen Stelle ein.fügt sie an der richtigen Stelle ein.
Mögliche VariationenMögliche Variationen Je nach Kursgröße kann es noch eine weitere Je nach Kursgröße kann es noch eine weitere
Gruppe geben, die einen Quasi-Mergesort Gruppe geben, die einen Quasi-Mergesort durchführtdurchführt- Anweisung hierzu beispielsweise: - Anweisung hierzu beispielsweise:
Teilt den Stapel zunächst in vier Stapel Teilt den Stapel zunächst in vier Stapel (Pik-Kreuz-(Pik-Kreuz- Herz-Karo), sortiert jeden Herz-Karo), sortiert jeden dieser Stapel in sich dieser Stapel in sich aufsteigend und aufsteigend und fügt die vier Stapel dann zu fügt die vier Stapel dann zu einem einem zusammen.zusammen.
Wenn die Kursgröße eine Einteilung in 8 Wenn die Kursgröße eine Einteilung in 8 Kleingruppen zuläßt, kann man zusätzlich Kleingruppen zuläßt, kann man zusätzlich noch die Größe der Kartenstapel variieren.noch die Größe der Kartenstapel variieren.
AllgemeinesAllgemeines Sortieren: der Prozess des Anordnens einer Sortieren: der Prozess des Anordnens einer
gegebenen Menge von Objekten in einer bestimmten gegebenen Menge von Objekten in einer bestimmten Ordnung. Die Ordnung hängt von der Art der Objekte Ordnung. Die Ordnung hängt von der Art der Objekte ab. ab.
Das Sortieren von Daten nach bestimmten Kriterien Das Sortieren von Daten nach bestimmten Kriterien gehört zu den wichtigsten Problemen der Informatik. gehört zu den wichtigsten Problemen der Informatik.
Sortierte Daten erleichtern Suche erheblichSortierte Daten erleichtern Suche erheblich Bei großen Datenmengen ist es wichtig, daß effiziente Bei großen Datenmengen ist es wichtig, daß effiziente
Algorithmen zur Verfügung stehen. Algorithmen zur Verfügung stehen. Die verschiedenen Algorithmen haben alle Vor- und Die verschiedenen Algorithmen haben alle Vor- und
Nachteile, je nachdem auf welche Daten man sie Nachteile, je nachdem auf welche Daten man sie anwendet. So kann je nach Datenbestand der anwendet. So kann je nach Datenbestand der „schlechteste“ Algorithmus am schnellsten fertig sein. „schlechteste“ Algorithmus am schnellsten fertig sein. Stichwort: Effizienz eines Sortieralgorithmus.Stichwort: Effizienz eines Sortieralgorithmus.
Beispiele für sortierte Mengen im Alltag: Telefonbuch, Beispiele für sortierte Mengen im Alltag: Telefonbuch, Lexika, WörterbücherLexika, Wörterbücher
Erläuterung der Erläuterung der SortieralgorithmenSortieralgorithmen
Folgende Sortieralgorithmen sollen Folgende Sortieralgorithmen sollen vorgestellt werden:vorgestellt werden: Selection Sort & Insertion Sort (kurze Selection Sort & Insertion Sort (kurze
Erläuterung anhand der Erläuterung anhand der Vorgehensweise beim Kartenspiel)Vorgehensweise beim Kartenspiel)
Bubble SortBubble Sort Quick SortQuick Sort Merge SortMerge Sort
Selection SortSelection Sort Prinzip: das kleinste Element eines Feldes Prinzip: das kleinste Element eines Feldes
suchen, und dieses dann mit dem ersten suchen, und dieses dann mit dem ersten Element tauschenElement tauschen
Zu Beginn sucht man im ganzen Feld nach dem Zu Beginn sucht man im ganzen Feld nach dem kleinsten Element und tauscht mit dem ersten kleinsten Element und tauscht mit dem ersten Element. Element.
Danach sucht man im Restfeld ohne erstes Danach sucht man im Restfeld ohne erstes Element nach dem kleinsten Element und Element nach dem kleinsten Element und tauscht mit dem ersten Element des Restfeldes.tauscht mit dem ersten Element des Restfeldes.
Dies wiederholt man, bis das zweitgrößte Dies wiederholt man, bis das zweitgrößte Element an den korrekten Platz gebracht wurde. Element an den korrekten Platz gebracht wurde.
Selection Sort (Beispiel)Selection Sort (Beispiel)
55 3737 1313 2121 22 1414
unsortiertunsortiert
22 3737 1313 2121 55 1414
s.s. unsortiertunsortiert
22 55 1313 2121 3737 1414
sortiertsortiert unsortiertunsortiert
Insertion SortInsertion Sort Prinzip: das erste Element eines Prinzip: das erste Element eines
unsortierten Feldes wird an der richtigen unsortierten Feldes wird an der richtigen Stelle in ein sortiertes Feld eingefügtStelle in ein sortiertes Feld eingefügt
Zunächst besteht der sortierte Teil nur Zunächst besteht der sortierte Teil nur aus dem ersten Element.aus dem ersten Element.
Das erste Element der unsortierten Folge Das erste Element der unsortierten Folge wird nun solange mit dem vorherigen wird nun solange mit dem vorherigen getauscht, solange es kleiner als das getauscht, solange es kleiner als das vorherige ist. vorherige ist.
Dies wird solange wiederholt, bis das Dies wird solange wiederholt, bis das gesamte Feld sortiert vorliegt. gesamte Feld sortiert vorliegt.
Insertion Sort (Beispiel)Insertion Sort (Beispiel)
55 1313 3737 2121 22 1414
sortiertsortiert unsortiertunsortiert
55 3737 1313 2121 22 1414
s.s. unsortiertunsortiert
55 3737 1313 2121 22 1414
sortiertsortiert unsortiertunsortiert
Bubble SortBubble Sort Prinzip: das Feld wird durchlaufen und dabei Prinzip: das Feld wird durchlaufen und dabei
so getauscht, dass das größte bzw. kleinste so getauscht, dass das größte bzw. kleinste Element an der richtigen Stelle steht. Element an der richtigen Stelle steht.
Beginn am Ende des Feldes. Tausch Beginn am Ende des Feldes. Tausch benachbarter Elemente, wenn ein Element benachbarter Elemente, wenn ein Element kleiner als sein Vorgänger ist. Das kleinste kleiner als sein Vorgänger ist. Das kleinste Element steht nach einem Durchlauf am Element steht nach einem Durchlauf am Anfang des Feldes. Anfang des Feldes.
Wiederholung des Vorgangs ohne Einbezug Wiederholung des Vorgangs ohne Einbezug des bereits sortierten Feldanteils bis das Feld des bereits sortierten Feldanteils bis das Feld vollständig sortiert vorliegt.vollständig sortiert vorliegt.
Die Sortierung wird beendet sobald kein Die Sortierung wird beendet sobald kein Tausch während eines Durchlaufs Tausch während eines Durchlaufs stattgefunden hat.stattgefunden hat.
Bubble Sort (Beispiel)Bubble Sort (Beispiel)
22 55 1313 3737 1414 2121
sortiertsortiert unsortiertunsortiert
22 55 3737 1313 2121 1414
s.s. unsortiertunsortiert
55 3737 1313 2121 22 1414
unsortiertunsortiert
Quick SortQuick Sort Prinzip: „Divide and Conquer“, also Sortieren durch Prinzip: „Divide and Conquer“, also Sortieren durch
Zerlegen in einzelne Teilfolgen. RekursiverZerlegen in einzelne Teilfolgen. Rekursiver Sortieralgorithmus. Sortieralgorithmus.
Zunächst Wahl eines willkürlichen Zunächst Wahl eines willkürlichen Vergleichselementes (Wert in der Mitte der Folge). Vergleichselementes (Wert in der Mitte der Folge). Zwei Zeiger durchlaufen das Feld von links bzw. Zwei Zeiger durchlaufen das Feld von links bzw. rechts. Außerdem muß man aufgrund des rekursiven rechts. Außerdem muß man aufgrund des rekursiven Aufbaus die Anfangs- und Endstelle des Felds Aufbaus die Anfangs- und Endstelle des Felds angeben.angeben.
Der linke Zeiger läuft vom Anfang aus bis ein Der linke Zeiger läuft vom Anfang aus bis ein Element gefunden wird, das größer oder gleich dem Element gefunden wird, das größer oder gleich dem Vergleichselement ist. Der rechte Zeiger läuft vom Vergleichselement ist. Der rechte Zeiger läuft vom Ende aus bis ein Element gefunden wird, das kleiner Ende aus bis ein Element gefunden wird, das kleiner oder gleich dem Vergleichselement ist.oder gleich dem Vergleichselement ist.
Quick Sort (Fortsetzung)Quick Sort (Fortsetzung) Zeigt der linke Zeiger auf ein größeres Element als Zeigt der linke Zeiger auf ein größeres Element als
der rechte, so werden beide Elemente getauscht. Dies der rechte, so werden beide Elemente getauscht. Dies wiederholt man, bis die beiden Zeiger aneinander wiederholt man, bis die beiden Zeiger aneinander vorbeigelaufen sind. Man erhält zwei Folgen, eine vorbeigelaufen sind. Man erhält zwei Folgen, eine kleiner und eine größer als das Vergleichselement. kleiner und eine größer als das Vergleichselement.
Nun ruft man Quick Sort mit den Teilfolgen rekursiv Nun ruft man Quick Sort mit den Teilfolgen rekursiv wieder auf. Als Grenzen übergibt man den Feldanfang wieder auf. Als Grenzen übergibt man den Feldanfang und den rechten Zeiger sowie den linken Zeiger und und den rechten Zeiger sowie den linken Zeiger und das Feldende. Die Teilfolgen werden wie beschrieben das Feldende. Die Teilfolgen werden wie beschrieben zu neuen Teilfolgen sortiert und wieder geteilt.zu neuen Teilfolgen sortiert und wieder geteilt.
Die Abbruchbedingung ist erreicht, wenn die Teilfolge Die Abbruchbedingung ist erreicht, wenn die Teilfolge nur noch aus einem Element besteht. Das Feld wird nur noch aus einem Element besteht. Das Feld wird nun sortiert wieder zusammengesetzt.nun sortiert wieder zusammengesetzt.
Quick Sort (Beispiel)Quick Sort (Beispiel)
55 3737 1313 2121 22 1313
ll vv rr
55 3737 1313 2121 22 1313
ll vv rr
55 1313 1313 2121 22 3737
l, vl, v rr
55 1313 22 2121 1313 3737
rr ll vv
Merge SortMerge Sort Prinzip: Das Feld wird zu Beginn rekursiv in Prinzip: Das Feld wird zu Beginn rekursiv in
einzelne Teilfelder zerlegt, bis jedes Feld nur einzelne Teilfelder zerlegt, bis jedes Feld nur noch die Größe von einem Element hat. noch die Größe von einem Element hat. Rekursiver Sortieralgorithmus.Rekursiver Sortieralgorithmus.
Einelementige Teilfelder sind stets sortiert.Einelementige Teilfelder sind stets sortiert. Nun werden je zwei Teilfolgen zusammen in Nun werden je zwei Teilfolgen zusammen in
ein Hilfsfeld sortiert, indem beide Teilfolgen ein Hilfsfeld sortiert, indem beide Teilfolgen von vorne nach hinten durchlaufen werden von vorne nach hinten durchlaufen werden und das jeweils kleinere Element in das und das jeweils kleinere Element in das Hilfsfeld übertragen wird.Hilfsfeld übertragen wird.
Dieser Vorgang wird solange wiederholt bis Dieser Vorgang wird solange wiederholt bis alle Teilfolgen (Hilfsfolgen) alle Teilfolgen (Hilfsfolgen) zusammengemischt vorliegen. Das Feld ist zusammengemischt vorliegen. Das Feld ist nun sortiert.nun sortiert.
Diskussion: Welche Variablen haben Diskussion: Welche Variablen haben Einfluß auf die Sortiergeschwindigkeit?Einfluß auf die Sortiergeschwindigkeit?
Anzahl der VergleicheAnzahl der Vergleiche Anzahl der TauschvorgängeAnzahl der Tauschvorgänge Sortierte vs. unsortierte vs. umgekehrt Sortierte vs. unsortierte vs. umgekehrt
sortierte Feldersortierte FelderBsp.: Vorsortierung beim Insertion Sort sehr Bsp.: Vorsortierung beim Insertion Sort sehr hilfreich, beim Selection Sort aber egal hilfreich, beim Selection Sort aber egal
Größe des zu sortierenden FeldesGröße des zu sortierenden Feldes Parallelisierbarkeit, Bsp.: Geschwindigkeit des Parallelisierbarkeit, Bsp.: Geschwindigkeit des
Merge Sort hängt ab von der Anzahl der Merge Sort hängt ab von der Anzahl der Mitsortierer Mitsortierer
Fazit: Oft liefern verschiedene Algorithmen Fazit: Oft liefern verschiedene Algorithmen das gleiche Ergebnis, benötigen dafür aber das gleiche Ergebnis, benötigen dafür aber unterschiedlich lange Zeit.unterschiedlich lange Zeit.
Simulation durch Simulation durch ProgrammProgramm
Programm, das den Ablauf der Programm, das den Ablauf der Sortierung verdeutlicht und dabei Sortierung verdeutlicht und dabei die Anzahl der Vergleiche sowie die die Anzahl der Vergleiche sowie die Anzahl der Tauschoperationen zähltAnzahl der Tauschoperationen zählt
Geschwindigkeitsunterschiede gut Geschwindigkeitsunterschiede gut sichtbarsichtbar
Menge und Art der Daten Menge und Art der Daten einstellbareinstellbar
Zeitwertetabelle Zeitwertetabelle (beispielhaft)(beispielhaft)
Fall 1: zufällig sortierte FelderFall 1: zufällig sortierte Felder
10001000 50005000 1000010000 100000100000
BubbleBubble 2020 210210 10411041 241557241557
QuickQuick 00 00 1010 8080
MergeMerge 1010 1010 2020 130130
Zeitwertetabelle Zeitwertetabelle FortsetzungFortsetzung
Fall 2: fast sortierte FelderFall 2: fast sortierte Felder
10001000 50005000 1000010000 100001000000
BubbleBubble 2020 200200 811811 --
QuickQuick 00 00 1010 3535
MergeMerge 00 1010 2020 120120
Zeitwertetabelle Zeitwertetabelle FortsetzungFortsetzung
Fall 3: umgekehrt sortierte FelderFall 3: umgekehrt sortierte Felder
10001000 50005000 1000010000 100001000000
BubbleBubble 3030 610610 24602460 --
QuickQuick 00 1010 1010 5050
MergeMerge 00 1010 2020 120120
LaufzeitverhaltenLaufzeitverhalten
Da Speicher und Rechenzeit begrenzt sind, ist Da Speicher und Rechenzeit begrenzt sind, ist die Effizienz eines Algorithmus wichtig.die Effizienz eines Algorithmus wichtig.
Die sog. O-Notation ermöglicht eine Abschätzung Die sog. O-Notation ermöglicht eine Abschätzung des Verhaltens eines Algorithmus gegenüber des Verhaltens eines Algorithmus gegenüber einer variablen Problemgröße (hier: Menge der einer variablen Problemgröße (hier: Menge der zu sortierenden Daten) und damit einen zu sortierenden Daten) und damit einen Vergleich der verschiedenen Sortierverfahren Vergleich der verschiedenen Sortierverfahren bei einer konkreten Problemgröße. bei einer konkreten Problemgröße.
So kann ein Algorithmus ggf. für die Lösung So kann ein Algorithmus ggf. für die Lösung eines Problems verworfen werden.eines Problems verworfen werden.Bsp.: Liegt ein Algorithmus in O(n²), dann ist bei Bsp.: Liegt ein Algorithmus in O(n²), dann ist bei einem doppelt so großen Problem mit einer einem doppelt so großen Problem mit einer vierfachen Laufzeit zu rechnen.vierfachen Laufzeit zu rechnen.
AlternativenAlternativen Den von den Schülern erstellten Code in Den von den Schülern erstellten Code in
ein Benchmark-Programm einbinden und ein Benchmark-Programm einbinden und die Laufzeit für vorgefertigte Datensätze die Laufzeit für vorgefertigte Datensätze messen.messen.
Möglicherweise in Form eines Möglicherweise in Form eines Wettbewerbs, welcher Schüler den Wettbewerbs, welcher Schüler den schnellsten Sortieralgorithmus schnellsten Sortieralgorithmus programmiert hat.programmiert hat.
HausaufgabenHausaufgaben
Erstellen von Code für einen beliebig Erstellen von Code für einen beliebig wählbaren Sortieralgorithmuswählbaren Sortieralgorithmus
Überlege welches Best- und Überlege welches Best- und Worstcase-Szenarien für die Worstcase-Szenarien für die vorgestellten Sortierverfahren sind.vorgestellten Sortierverfahren sind.