+ All Categories
Home > Documents > Einführung in die Programmierung -...

Einführung in die Programmierung -...

Date post: 04-Sep-2019
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
182
Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit Einführung in die Programmierung Vorlesungsteil 8 Sortieren PD Dr. Thomas Hinze Brandenburgische Technische Universität Cottbus – Senftenberg Institut für Informatik Sommersemester 2016 Einführung in die Programmierung Thomas Hinze
Transcript
Page 1: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Einführung in die ProgrammierungVorlesungsteil 8

Sortieren

PD Dr. Thomas Hinze

Brandenburgische Technische Universität Cottbus – SenftenbergInstitut für Informatik

Sommersemester 2016

Einführung in die Programmierung Thomas Hinze

Page 2: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Sortieren als bedeutende Aufgabenklasse

EDCBA

• 20 . . . 25% der Rechenzeit auf Großrechenanlagen entfallen aufSortieraufgaben (Studie der Stanford University)

• Sortieren als eine der ersten Aufgabenklassen algorithmischerschlossen

• Mehr als 40 verschiedene Sortierverfahren bekannt und genutzt

• Aufgabenklasse Sortieren in Theorie und Praxis gut untersucht

• Sortierverfahren breit gefächert nach konträrenOptimierungszielen wie Schnelligkeit , wenigHilfsspeicherplatzverbrauch und vorteilhafte Parallelverarbeitung

Einführung in die Programmierung Thomas Hinze

Page 3: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Sortieren als bedeutende Aufgabenklasse

EDCBA

• 20 . . . 25% der Rechenzeit auf Großrechenanlagen entfallen aufSortieraufgaben (Studie der Stanford University)

• Sortieren als eine der ersten Aufgabenklassen algorithmischerschlossen

• Mehr als 40 verschiedene Sortierverfahren bekannt und genutzt

• Aufgabenklasse Sortieren in Theorie und Praxis gut untersucht

• Sortierverfahren breit gefächert nach konträrenOptimierungszielen wie Schnelligkeit , wenigHilfsspeicherplatzverbrauch und vorteilhafte Parallelverarbeitung

Einführung in die Programmierung Thomas Hinze

Page 4: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Sortieren als bedeutende Aufgabenklasse

EDCBA

• 20 . . . 25% der Rechenzeit auf Großrechenanlagen entfallen aufSortieraufgaben (Studie der Stanford University)

• Sortieren als eine der ersten Aufgabenklassen algorithmischerschlossen

• Mehr als 40 verschiedene Sortierverfahren bekannt und genutzt

• Aufgabenklasse Sortieren in Theorie und Praxis gut untersucht

• Sortierverfahren breit gefächert nach konträrenOptimierungszielen wie Schnelligkeit , wenigHilfsspeicherplatzverbrauch und vorteilhafte Parallelverarbeitung

Einführung in die Programmierung Thomas Hinze

Page 5: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Sortieren als bedeutende Aufgabenklasse

EDCBA

• 20 . . . 25% der Rechenzeit auf Großrechenanlagen entfallen aufSortieraufgaben (Studie der Stanford University)

• Sortieren als eine der ersten Aufgabenklassen algorithmischerschlossen

• Mehr als 40 verschiedene Sortierverfahren bekannt und genutzt

• Aufgabenklasse Sortieren in Theorie und Praxis gut untersucht

• Sortierverfahren breit gefächert nach konträrenOptimierungszielen wie Schnelligkeit , wenigHilfsspeicherplatzverbrauch und vorteilhafte Parallelverarbeitung

Einführung in die Programmierung Thomas Hinze

Page 6: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Sortieren dient effizienter Datenorganisation

<

< <

>

>>

Lehmann ?

Meier

Schmidt

LehmannHinz Paul Walter

Kunz

• Sortierte Datenbestände lassen sich deutlich schnellerdurchsuchen als unsortierte (z.B. Telefonbuch)

• Datensätze dabei in Baumstrukturen sortiert (binäreSuchbäume), so dass mit jedem Vergleichsschritt derverbleibende Suchraum etwa halbiert wird

• Bei Änderungen im Datenbestand Neusortieren erforderlich, wasaber häufig viel schneller als die Erstsortierung geschehen kann

Einführung in die Programmierung Thomas Hinze

Page 7: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Sortieren ist Bestandteil zahlreicher Algorithmen

?

100 % 94 % 81 % 46 %

• in Greedy -Algorithmen

• in Heuristiken (wie Selektion bei künstlicher Evolution)

• in Verfahren zum Prozess-Scheduling

• in Verfahren zur statistischen Datenanalyse

• in Verfahren zur perspektivischen Darstellung grafischer Objekte

• bei Scoring-Verfahren (z.B. Ähnlichkeit von Genomsequenzen)

Einführung in die Programmierung Thomas Hinze

Page 8: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Sortieren dient der Visualisierung von Daten

www.sportschau.de – Fußball-Bundesliga – Quizfrage: Von wann ist diese Tabelle?

• übersichtliche, leicht erfassbare Aufbereitung von Datenmengen

• Anordnung widerspiegelt Rangfolge und fokussiertAufmerksamkeit des Betrachters

Einführung in die Programmierung Thomas Hinze

Page 9: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Sortierverfahren (Auswahl)

Bitonisches MischenSortiernetz

Bubblesort

Insertionsort

SelectionsortRadixsort

Bucketsort

Flashsort

HeapsortQuicksort

Shellsort

Bogosort

Odd−even sort

Mergesort

Einführung in die Programmierung Thomas Hinze

Page 10: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Sortierverfahren (Auswahl)

Bitonisches MischenSortiernetz

Bubblesort

Insertionsort

SelectionsortRadixsort

Bucketsort

Flashsort

HeapsortQuicksort

Shellsort

Bogosort

Odd−even sort

Mergesort

elementar : wenig Hilfsspeicherbedarf, leicht implementierbarEinführung in die Programmierung Thomas Hinze

Page 11: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Sortierverfahren (Auswahl)

Bitonisches MischenSortiernetz

Bubblesort

Insertionsort

SelectionsortRadixsort

Bucketsort

Flashsort

HeapsortQuicksort

Shellsort

Bogosort

Odd−even sort

Mergesort

rekursiv : schnell, elegant, gut skalierbar, Mergesort präferiertEinführung in die Programmierung Thomas Hinze

Page 12: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Sortierverfahren (Auswahl)

Bitonisches MischenSortiernetz

Bubblesort

Insertionsort

SelectionsortRadixsort

Bucketsort

Flashsort

HeapsortQuicksort

Shellsort

Bogosort

Odd−even sort

Mergesort

Fachverteilen: sehr schnell, kommt ohne Vergleiche ausEinführung in die Programmierung Thomas Hinze

Page 13: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Sortierverfahren (Auswahl)

Bubblesort

Insertionsort

SelectionsortRadixsort

Bucketsort

Flashsort

HeapsortQuicksort

Shellsort

Bogosort

Odd−even sort

Mergesort

Sortiernetz Bitonisches Mischen

parallel : sehr schnell, hardwarenah, datenflussorientiertEinführung in die Programmierung Thomas Hinze

Page 14: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Vorlesung Einführung in die Programmierung mit Java1. Einführung und erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . Installation Java-Compiler, ein erstes Programm: HalloWelt, Blick in den Computer2. Elementare Datentypen, Variablen, Arithmetik, Typecast . . . . . . . . . . . . . . . . . . . . . . . .

Java als Taschenrechner nutzen, Tastatureingabe→ Formelberechnung→ Ausgabe3. Imperative Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . Befehlsfolgen, Verzweigungen, Schleifen und logische Ausdrücke programmieren4. Methoden selbst programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . Methoden als wiederverwendbare Funktionen, Werteübernahme und -rückgabe5. Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . selbstaufrufende Funktionen als elegantes algorithmisches Beschreibungsmittel6. Objektorientiert programmieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . .Klassen, Objekte, Attribute, Methoden, Sichtbarkeit, Vererbung, Polymorphie7. Felder und Graphen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . .effizientes Handling größerer Datenmengen und Beschreibung von Netzwerken8. Sortieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . klassische Sortierverfahren im Überblick, Laufzeit und Speicherplatzbedarf9. Zeichenketten, Dateiarbeit, Ausnahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . .Texte analysieren, ver-/entschlüsseln, Dateien lesen/schreiben, Fehler behandeln10. Dynamische Datenstruktur „Lineare Liste“ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . unsere selbstprogrammierte kleine Datenbank11. Ausblick und weiterführende Konzepte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Einführung in die Programmierung Thomas Hinze

Page 15: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Unsere Beispiele: Ganze Zahlen aufsteigend sortieren

Algorithmen leicht modifizierbar auf Sortieren von ZeichenkettenEinführung in die Programmierung Thomas Hinze

Page 16: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Datensatz

12080

Max Mustermann

Musterstraße 1

01234 Musterstadt

Schlüssel

zugeordnete Daten

• Schlüssel: Ordnungsmerkmal für Datensätze,aufsteigend oder absteigend anordnen

• Schlüsselduplikate beim Sortieren zulässig• Ein Sortierverfahren, bei dem Schlüsselduplikate nach

dem Sortieren in der gleichen Reihenfolge angeordnetbleiben wie vorher, heißt stabil , anderenfalls instabil.

Einführung in die Programmierung Thomas Hinze

Page 17: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Datensatz

12080

Max Mustermann

Musterstraße 1

01234 Musterstadt

Schlüssel

zugeordnete Daten

• Schlüssel: Ordnungsmerkmal für Datensätze,aufsteigend oder absteigend anordnen

• Schlüsselduplikate beim Sortieren zulässig

• Ein Sortierverfahren, bei dem Schlüsselduplikate nachdem Sortieren in der gleichen Reihenfolge angeordnetbleiben wie vorher, heißt stabil , anderenfalls instabil.

Einführung in die Programmierung Thomas Hinze

Page 18: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Datensatz

12080

Max Mustermann

Musterstraße 1

01234 Musterstadt

Schlüssel

zugeordnete Daten

• Schlüssel: Ordnungsmerkmal für Datensätze,aufsteigend oder absteigend anordnen

• Schlüsselduplikate beim Sortieren zulässig• Ein Sortierverfahren, bei dem Schlüsselduplikate nach

dem Sortieren in der gleichen Reihenfolge angeordnetbleiben wie vorher, heißt stabil , anderenfalls instabil.

Einführung in die Programmierung Thomas Hinze

Page 19: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

AnnahmenDatenhaltung• n Schlüssel in Feld a[0],a[1], . . . ,a[n − 1] gespeichert.

• Auf jeden Schlüssel (Feldelement) kann direkt (wahlfrei)zugegriffen werden (internes Sortieren).

• Feld a[0],a[1], . . . ,a[n − 1] enthält zu Beginn die Eingabeund nach Sortierende die Ausgabe (Sortieren „in-place“bzw. „in situ“) – typisch für vergleichsbasierte Verfahren.

Laufzeitrelevante elementare Arbeitsschritte• Vergleich zweier Schlüssel• Umspeichern von Schlüsseln

(z.B. Vertauschen, Einfügen, Verschieben)• Anzahl benötigte elementare Arbeitsschritte ist Maß für

Schnelligkeit (Zeitkomplexität) des Sortierverfahrens

Einführung in die Programmierung Thomas Hinze

Page 20: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

AnnahmenDatenhaltung• n Schlüssel in Feld a[0],a[1], . . . ,a[n − 1] gespeichert.• Auf jeden Schlüssel (Feldelement) kann direkt (wahlfrei)

zugegriffen werden (internes Sortieren).

• Feld a[0],a[1], . . . ,a[n − 1] enthält zu Beginn die Eingabeund nach Sortierende die Ausgabe (Sortieren „in-place“bzw. „in situ“) – typisch für vergleichsbasierte Verfahren.

Laufzeitrelevante elementare Arbeitsschritte• Vergleich zweier Schlüssel• Umspeichern von Schlüsseln

(z.B. Vertauschen, Einfügen, Verschieben)• Anzahl benötigte elementare Arbeitsschritte ist Maß für

Schnelligkeit (Zeitkomplexität) des Sortierverfahrens

Einführung in die Programmierung Thomas Hinze

Page 21: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

AnnahmenDatenhaltung• n Schlüssel in Feld a[0],a[1], . . . ,a[n − 1] gespeichert.• Auf jeden Schlüssel (Feldelement) kann direkt (wahlfrei)

zugegriffen werden (internes Sortieren).• Feld a[0],a[1], . . . ,a[n − 1] enthält zu Beginn die Eingabe

und nach Sortierende die Ausgabe (Sortieren „in-place“bzw. „in situ“) – typisch für vergleichsbasierte Verfahren.

Laufzeitrelevante elementare Arbeitsschritte• Vergleich zweier Schlüssel• Umspeichern von Schlüsseln

(z.B. Vertauschen, Einfügen, Verschieben)• Anzahl benötigte elementare Arbeitsschritte ist Maß für

Schnelligkeit (Zeitkomplexität) des Sortierverfahrens

Einführung in die Programmierung Thomas Hinze

Page 22: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

AnnahmenDatenhaltung• n Schlüssel in Feld a[0],a[1], . . . ,a[n − 1] gespeichert.• Auf jeden Schlüssel (Feldelement) kann direkt (wahlfrei)

zugegriffen werden (internes Sortieren).• Feld a[0],a[1], . . . ,a[n − 1] enthält zu Beginn die Eingabe

und nach Sortierende die Ausgabe (Sortieren „in-place“bzw. „in situ“) – typisch für vergleichsbasierte Verfahren.

Laufzeitrelevante elementare Arbeitsschritte• Vergleich zweier Schlüssel• Umspeichern von Schlüsseln

(z.B. Vertauschen, Einfügen, Verschieben)• Anzahl benötigte elementare Arbeitsschritte ist Maß für

Schnelligkeit (Zeitkomplexität) des Sortierverfahrens

Einführung in die Programmierung Thomas Hinze

Page 23: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Begriff Sortieren• Gegeben: n Datensätze mit Schlüsseln a[0], . . . ,a[n − 1].

• Zwischen Schlüsseln totale Ordnung ≤ definiert.• Totale Ordnung: Binäre Relation mit den Eigenschaften

• reflexiv: a[i] ≤ a[i] (für alle i = 0, . . . ,n − 1)• antisymmetrisch: Wenn a[i] 6= a[k ] und a[i] ≤ a[k ] dann

a[k ]/≤ a[i] (für alle i , k = 0, . . . ,n − 1)• transitiv: Wenn a[i] ≤ a[k ] und a[k ] ≤ a[p] dann auch

a[i] ≤ a[p] (für alle i , k ,p = 0, . . . ,n − 1)

• Sortieren: Eine Permutation durch Umindizieren derSchlüssel finden, so dassa[0] ≤ a[1] ≤ a[2] ≤ . . . ≤ a[n − 1] (aufsteigend) bzw.a[n − 1] ≤ . . . ≤ a[2] ≤ a[1] ≤ a[0] (absteigend sortiert)

• n paarweise verschiedene Datensätze lassen sich inn! = n · (n − 1) · . . . · 2 · 1 Permutationen anordnen(Eingaberaumgröße).

Einführung in die Programmierung Thomas Hinze

Page 24: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Begriff Sortieren• Gegeben: n Datensätze mit Schlüsseln a[0], . . . ,a[n − 1].• Zwischen Schlüsseln totale Ordnung ≤ definiert.• Totale Ordnung: Binäre Relation mit den Eigenschaften

• reflexiv: a[i] ≤ a[i] (für alle i = 0, . . . ,n − 1)• antisymmetrisch: Wenn a[i] 6= a[k ] und a[i] ≤ a[k ] dann

a[k ]/≤ a[i] (für alle i , k = 0, . . . ,n − 1)• transitiv: Wenn a[i] ≤ a[k ] und a[k ] ≤ a[p] dann auch

a[i] ≤ a[p] (für alle i , k ,p = 0, . . . ,n − 1)

• Sortieren: Eine Permutation durch Umindizieren derSchlüssel finden, so dassa[0] ≤ a[1] ≤ a[2] ≤ . . . ≤ a[n − 1] (aufsteigend) bzw.a[n − 1] ≤ . . . ≤ a[2] ≤ a[1] ≤ a[0] (absteigend sortiert)

• n paarweise verschiedene Datensätze lassen sich inn! = n · (n − 1) · . . . · 2 · 1 Permutationen anordnen(Eingaberaumgröße).

Einführung in die Programmierung Thomas Hinze

Page 25: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Begriff Sortieren• Gegeben: n Datensätze mit Schlüsseln a[0], . . . ,a[n − 1].• Zwischen Schlüsseln totale Ordnung ≤ definiert.• Totale Ordnung: Binäre Relation mit den Eigenschaften

• reflexiv: a[i] ≤ a[i] (für alle i = 0, . . . ,n − 1)• antisymmetrisch: Wenn a[i] 6= a[k ] und a[i] ≤ a[k ] dann

a[k ]/≤ a[i] (für alle i , k = 0, . . . ,n − 1)• transitiv: Wenn a[i] ≤ a[k ] und a[k ] ≤ a[p] dann auch

a[i] ≤ a[p] (für alle i , k ,p = 0, . . . ,n − 1)

• Sortieren: Eine Permutation durch Umindizieren derSchlüssel finden, so dassa[0] ≤ a[1] ≤ a[2] ≤ . . . ≤ a[n − 1] (aufsteigend) bzw.a[n − 1] ≤ . . . ≤ a[2] ≤ a[1] ≤ a[0] (absteigend sortiert)

• n paarweise verschiedene Datensätze lassen sich inn! = n · (n − 1) · . . . · 2 · 1 Permutationen anordnen(Eingaberaumgröße).

Einführung in die Programmierung Thomas Hinze

Page 26: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Begriff Sortieren• Gegeben: n Datensätze mit Schlüsseln a[0], . . . ,a[n − 1].• Zwischen Schlüsseln totale Ordnung ≤ definiert.• Totale Ordnung: Binäre Relation mit den Eigenschaften

• reflexiv: a[i] ≤ a[i] (für alle i = 0, . . . ,n − 1)• antisymmetrisch: Wenn a[i] 6= a[k ] und a[i] ≤ a[k ] dann

a[k ]/≤ a[i] (für alle i , k = 0, . . . ,n − 1)• transitiv: Wenn a[i] ≤ a[k ] und a[k ] ≤ a[p] dann auch

a[i] ≤ a[p] (für alle i , k ,p = 0, . . . ,n − 1)

• Sortieren: Eine Permutation durch Umindizieren derSchlüssel finden, so dassa[0] ≤ a[1] ≤ a[2] ≤ . . . ≤ a[n − 1] (aufsteigend) bzw.a[n − 1] ≤ . . . ≤ a[2] ≤ a[1] ≤ a[0] (absteigend sortiert)

• n paarweise verschiedene Datensätze lassen sich inn! = n · (n − 1) · . . . · 2 · 1 Permutationen anordnen(Eingaberaumgröße).

Einführung in die Programmierung Thomas Hinze

Page 27: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Idee der LaufzeitmessungGegeben sei ein beliebiger in-place Sortieralgorithmus.

Anzahl elementareArbeitsschritte(Vergleichen,Umspeichern)

Eingabedaten: n=3 Schlüssel (a[1], a[2], a[3])

0

1

2

3

4

n!=3!=6 Permutationenalle zulässigen Eingaben:

Ausgabe: (2,4,8) (8,4,2)

(8,2,4)

(4,8,2)

(4,2,8)

(2,4,8)

(2,8,4)

• Für jede Problemgröße n (Anzahl Schlüssel) und• alle zulässigen Eingaben (n! Permutationen) wird die• Anzahl benötigter elementarer Arbeitsschritte

(Vergleichen, Umspeichern) gezählt bzw. ermittelt.

Einführung in die Programmierung Thomas Hinze

Page 28: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Best CaseGegeben sei ein fiktiver in-place Sortieralgorithmus.

Anzahl elementareArbeitsschritte(Vergleichen,Umspeichern)

Eingabedaten: n=3 Schlüssel (a[1], a[2], a[3])

0

1

2

3

4

n!=3!=6 Permutationenalle zulässigen Eingaben:

Ausgabe: (2,4,8) (8,4,2)

(8,2,4)

(4,8,2)

(4,2,8)

(2,4,8)

(2,8,4)

Best Case

• Diejenige Eingabe, bei der der Algorithmus die wenigstenelementaren Arbeitsschritte benötigt.

• Für jede Problemgröße n ergibt sich somit eine minimaleArbeitsschrittanzahl fmin(n). (Im Beispiel: fmin(3) = 2)

Einführung in die Programmierung Thomas Hinze

Page 29: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Worst CaseGegeben sei ein fiktiver in-place Sortieralgorithmus.

Anzahl elementareArbeitsschritte(Vergleichen,Umspeichern)

Eingabedaten: n=3 Schlüssel (a[1], a[2], a[3])

0

1

2

3

4

n!=3!=6 Permutationenalle zulässigen Eingaben:

Ausgabe: (2,4,8) (8,4,2)

(8,2,4)

(4,8,2)

(4,2,8)

(2,4,8)

(2,8,4)

Worst Case

• Diejenige Eingabe, bei der der Algorithmus die meistenelementaren Arbeitsschritte benötigt.

• Für jede Problemgröße n ergibt sich somit eine maximaleArbeitsschrittanzahl fmax(n). (Im Beispiel: fmax(3) = 4)

Einführung in die Programmierung Thomas Hinze

Page 30: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Average CaseGegeben sei ein fiktiver in-place Sortieralgorithmus.

Anzahl elementareArbeitsschritte(Vergleichen,Umspeichern)

Eingabedaten: n=3 Schlüssel (a[1], a[2], a[3])

0

1

2

3

4

n!=3!=6 Permutationenalle zulässigen Eingaben:

Ausgabe: (2,4,8) (8,4,2)

(8,2,4)

(4,8,2)

(4,2,8)

(2,4,8)

(2,8,4)

(4+3+2+3+3+3)/6 = 3 Arbeitsschritte im MittelAverage Case

• Für jede Problemgröße n ergibt sich eine mittlereArbeitsschrittanzahl favg(n). (Im Beispiel: favg(3) = 3)

Einführung in die Programmierung Thomas Hinze

Page 31: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Wachstumsklassen (I)

• Für die Funktionen fmin(n), fmax(n) undfavg(n) zu einem Algorithmus könnenrecht komplizierte mathematischeAusdrücke entstehen.

• Mit immer größer werdendem n sindjedoch nur Teile im Funktionsausdruck für denWertezuwachs maßgeblich. (z.B. f(n) = 2n + 5 · n3 + 2 · n.Hier bestimmt der Term g(n) = 2n das Wachstum.)

• Entsprechend fasst man Funktionen f(n) mit qualitativgleichem Wachstumsverhalten zu einerWachstumsklasse O(g(n)) zusammen, die nach dembestimmenden Term g(n) benannt wird, Notation:f(n) ∈ O(g(n))

Einführung in die Programmierung Thomas Hinze

n

maxavg

min

f

Page 32: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Wachstumsklassen (I)

• Für die Funktionen fmin(n), fmax(n) undfavg(n) zu einem Algorithmus könnenrecht komplizierte mathematischeAusdrücke entstehen.

• Mit immer größer werdendem n sindjedoch nur Teile im Funktionsausdruck für denWertezuwachs maßgeblich. (z.B. f(n) = 2n + 5 · n3 + 2 · n.Hier bestimmt der Term g(n) = 2n das Wachstum.)

• Entsprechend fasst man Funktionen f(n) mit qualitativgleichem Wachstumsverhalten zu einerWachstumsklasse O(g(n)) zusammen, die nach dembestimmenden Term g(n) benannt wird, Notation:f(n) ∈ O(g(n))

Einführung in die Programmierung Thomas Hinze

n

maxavg

min

f

Page 33: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Wachstumsklassen (I)

• Für die Funktionen fmin(n), fmax(n) undfavg(n) zu einem Algorithmus könnenrecht komplizierte mathematischeAusdrücke entstehen.

• Mit immer größer werdendem n sindjedoch nur Teile im Funktionsausdruck für denWertezuwachs maßgeblich. (z.B. f(n) = 2n + 5 · n3 + 2 · n.Hier bestimmt der Term g(n) = 2n das Wachstum.)

• Entsprechend fasst man Funktionen f(n) mit qualitativgleichem Wachstumsverhalten zu einerWachstumsklasse O(g(n)) zusammen, die nach dembestimmenden Term g(n) benannt wird, Notation:f(n) ∈ O(g(n))

Einführung in die Programmierung Thomas Hinze

n

maxavg

min

f

Page 34: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Wachstumsklassen (II)

• Man kann durch ein Regelwerk ausrechnen, zu welcherWachstumsklasse eine gegebene Funktion f(n) gehört.

• Konstante Faktoren c werden hier (leider!) vernachlässigt:O(c · f(n)) = O(f(n))

• Merke: O(1) ⊂ O(log(n)) ⊂ O(n) ⊂ O(n · log(n)) ⊂O(n2) ⊂ O(2n) ⊂ O(n!)(von links nach rechts: steigende Komplexität)

• O(fmax(n)) und O(favg(n)) kennzeichnen dieZeitkomplexität (Effizienz) eines Algorithmus.

• Algorithmen bis zur Wachstumsklasse O(n2) gelten alseffizient.

Einführung in die Programmierung Thomas Hinze

Page 35: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Wachstumsklassen (II)

• Man kann durch ein Regelwerk ausrechnen, zu welcherWachstumsklasse eine gegebene Funktion f(n) gehört.

• Konstante Faktoren c werden hier (leider!) vernachlässigt:O(c · f(n)) = O(f(n))

• Merke: O(1) ⊂ O(log(n)) ⊂ O(n) ⊂ O(n · log(n)) ⊂O(n2) ⊂ O(2n) ⊂ O(n!)(von links nach rechts: steigende Komplexität)

• O(fmax(n)) und O(favg(n)) kennzeichnen dieZeitkomplexität (Effizienz) eines Algorithmus.

• Algorithmen bis zur Wachstumsklasse O(n2) gelten alseffizient.

Einführung in die Programmierung Thomas Hinze

Page 36: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Wachstumsklassen (II)

• Man kann durch ein Regelwerk ausrechnen, zu welcherWachstumsklasse eine gegebene Funktion f(n) gehört.

• Konstante Faktoren c werden hier (leider!) vernachlässigt:O(c · f(n)) = O(f(n))

• Merke: O(1) ⊂ O(log(n)) ⊂ O(n) ⊂ O(n · log(n)) ⊂O(n2) ⊂ O(2n) ⊂ O(n!)(von links nach rechts: steigende Komplexität)

• O(fmax(n)) und O(favg(n)) kennzeichnen dieZeitkomplexität (Effizienz) eines Algorithmus.

• Algorithmen bis zur Wachstumsklasse O(n2) gelten alseffizient.

Einführung in die Programmierung Thomas Hinze

Page 37: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Wachstumsklassen (II)

• Man kann durch ein Regelwerk ausrechnen, zu welcherWachstumsklasse eine gegebene Funktion f(n) gehört.

• Konstante Faktoren c werden hier (leider!) vernachlässigt:O(c · f(n)) = O(f(n))

• Merke: O(1) ⊂ O(log(n)) ⊂ O(n) ⊂ O(n · log(n)) ⊂O(n2) ⊂ O(2n) ⊂ O(n!)(von links nach rechts: steigende Komplexität)

• O(fmax(n)) und O(favg(n)) kennzeichnen dieZeitkomplexität (Effizienz) eines Algorithmus.

• Algorithmen bis zur Wachstumsklasse O(n2) gelten alseffizient.

Einführung in die Programmierung Thomas Hinze

Page 38: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Wachstumsklassen (II)

• Man kann durch ein Regelwerk ausrechnen, zu welcherWachstumsklasse eine gegebene Funktion f(n) gehört.

• Konstante Faktoren c werden hier (leider!) vernachlässigt:O(c · f(n)) = O(f(n))

• Merke: O(1) ⊂ O(log(n)) ⊂ O(n) ⊂ O(n · log(n)) ⊂O(n2) ⊂ O(2n) ⊂ O(n!)(von links nach rechts: steigende Komplexität)

• O(fmax(n)) und O(favg(n)) kennzeichnen dieZeitkomplexität (Effizienz) eines Algorithmus.

• Algorithmen bis zur Wachstumsklasse O(n2) gelten alseffizient.

Einführung in die Programmierung Thomas Hinze

Page 39: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

SelectionsortSortieren durch fortlaufendes Auswählen des kleinsten Elements

Bubblesort

Insertionsort

SelectionsortRadixsort

Bucketsort

Flashsort

HeapsortQuicksort

Shellsort

Bogosort

Odd−even sort

Mergesort

Sortiernetz Bitonisches Mischen

Einführung in die Programmierung Thomas Hinze

Page 40: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[0]

Einführung in die Programmierung Thomas Hinze

Page 41: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[0]

Einführung in die Programmierung Thomas Hinze

Page 42: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[0]

Einführung in die Programmierung Thomas Hinze

Page 43: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[0]

Einführung in die Programmierung Thomas Hinze

Page 44: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Fertig sortierter Bereich enthält jetzt a[0]

Einführung in die Programmierung Thomas Hinze

Page 45: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[1]

Einführung in die Programmierung Thomas Hinze

Page 46: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[1]

Einführung in die Programmierung Thomas Hinze

Page 47: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Fertig sortierter Bereich enthält jetzt a[0]...a[1]

Einführung in die Programmierung Thomas Hinze

Page 48: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[2]

Einführung in die Programmierung Thomas Hinze

Page 49: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[2]

Einführung in die Programmierung Thomas Hinze

Page 50: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Fertig sortierter Bereich enthält jetzt a[0]...a[2]

Einführung in die Programmierung Thomas Hinze

Page 51: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[3]

Einführung in die Programmierung Thomas Hinze

Page 52: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[3]

Einführung in die Programmierung Thomas Hinze

Page 53: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Fertig sortierter Bereich enthält jetzt a[0]...a[3]

Einführung in die Programmierung Thomas Hinze

Page 54: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[4]

Einführung in die Programmierung Thomas Hinze

Page 55: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[4]

Einführung in die Programmierung Thomas Hinze

Page 56: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Fertig sortierter Bereich enthält jetzt a[0]...a[4]

Einführung in die Programmierung Thomas Hinze

Page 57: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[5]

Einführung in die Programmierung Thomas Hinze

Page 58: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[5]

Einführung in die Programmierung Thomas Hinze

Page 59: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Fertig sortierter Bereich enthält jetzt a[0]...a[5]

Einführung in die Programmierung Thomas Hinze

Page 60: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[6]

Einführung in die Programmierung Thomas Hinze

Page 61: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Suche im unsortierten Teil des Feldes (grau hinterlegt) daskleinste Element und vertausche es mit a[6]

Einführung in die Programmierung Thomas Hinze

Page 62: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – IdeeAufsteigend sortieren durch fortlaufendes Auswählen des kleinsten Elements

Fertig sortiertes Feld a[0]...a[6]

Einführung in die Programmierung Thomas Hinze

Page 63: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort ausprogrammiertSelectionsort.java – Methode zum aufsteigenden In-place-Sortieren des Feldes a

Einführung in die Programmierung Thomas Hinze

Page 64: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort ausprogrammiertSelectionsort.java – main-Methode und Initialisierung des zu sortierenden Feldes

Einführung in die Programmierung Thomas Hinze

Page 65: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Selectionsort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . iterativ, vergleichsbasiert

Eigenschaften . . in-place, allg. instabil (stabil implementierbar)

Worst Case . . . . . . . . . . . . . . . . . . . . . größtes Element am Anfang,Restfolge danach aufsteigend geordnet

Best Case . . . . . . . . Folge anfänglich schon aufsteigend sortiert

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Vergleiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n · (n − 1)/2

Anzahl Vertauschungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . < n

Zeitkomplexität im Worst Case . . . . . . . . . . . . . . . . . . . . . . . . O(n2)

Einführung in die Programmierung Thomas Hinze

Page 66: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Selectionsort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . iterativ, vergleichsbasiert

Eigenschaften . . in-place, allg. instabil (stabil implementierbar)

Worst Case . . . . . . . . . . . . . . . . . . . . . größtes Element am Anfang,Restfolge danach aufsteigend geordnet

Best Case . . . . . . . . Folge anfänglich schon aufsteigend sortiert

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Vergleiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n · (n − 1)/2

Anzahl Vertauschungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . < n

Zeitkomplexität im Worst Case . . . . . . . . . . . . . . . . . . . . . . . . O(n2)

Einführung in die Programmierung Thomas Hinze

Page 67: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Selectionsort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . iterativ, vergleichsbasiert

Eigenschaften . . in-place, allg. instabil (stabil implementierbar)

Worst Case . . . . . . . . . . . . . . . . . . . . . größtes Element am Anfang,Restfolge danach aufsteigend geordnet

Best Case . . . . . . . . Folge anfänglich schon aufsteigend sortiert

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Vergleiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n · (n − 1)/2

Anzahl Vertauschungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . < n

Zeitkomplexität im Worst Case . . . . . . . . . . . . . . . . . . . . . . . . O(n2)

Einführung in die Programmierung Thomas Hinze

Page 68: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Selectionsort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . iterativ, vergleichsbasiert

Eigenschaften . . in-place, allg. instabil (stabil implementierbar)

Worst Case . . . . . . . . . . . . . . . . . . . . . größtes Element am Anfang,Restfolge danach aufsteigend geordnet

Best Case . . . . . . . . Folge anfänglich schon aufsteigend sortiert

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Vergleiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . n · (n − 1)/2

Anzahl Vertauschungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . < n

Zeitkomplexität im Worst Case . . . . . . . . . . . . . . . . . . . . . . . . O(n2)

Einführung in die Programmierung Thomas Hinze

Page 69: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – Vorteile und Einsatzgebiete

• kaum Hilfsspeicher benötigt (nur Laufvariablen und min)• wenig Umspeichervorgänge (Vertauschungen) im Feld• jedes Feldelement höchstens einmal bewegt• sortierbegleitend entsteht fertig sortierter Bereich, der

schon ausgelesen werden kann, während an anderenStellen im Feld noch sortiert wird

• Laufzeitverhalten im Best Case und Worst Caseunterscheidet sich nur geringfügig

• intuitiver, kurzer, gut überschaubarer undcompilerfreundlicher Quelltext

• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld geeignet

Nachteile: viele Vergleiche, daher langsam auch im Best Case

Einführung in die Programmierung Thomas Hinze

Page 70: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – Vorteile und Einsatzgebiete

• kaum Hilfsspeicher benötigt (nur Laufvariablen und min)• wenig Umspeichervorgänge (Vertauschungen) im Feld• jedes Feldelement höchstens einmal bewegt• sortierbegleitend entsteht fertig sortierter Bereich, der

schon ausgelesen werden kann, während an anderenStellen im Feld noch sortiert wird

• Laufzeitverhalten im Best Case und Worst Caseunterscheidet sich nur geringfügig

• intuitiver, kurzer, gut überschaubarer undcompilerfreundlicher Quelltext

• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld geeignet

Nachteile: viele Vergleiche, daher langsam auch im Best Case

Einführung in die Programmierung Thomas Hinze

Page 71: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – Vorteile und Einsatzgebiete

• kaum Hilfsspeicher benötigt (nur Laufvariablen und min)• wenig Umspeichervorgänge (Vertauschungen) im Feld• jedes Feldelement höchstens einmal bewegt• sortierbegleitend entsteht fertig sortierter Bereich, der

schon ausgelesen werden kann, während an anderenStellen im Feld noch sortiert wird

• Laufzeitverhalten im Best Case und Worst Caseunterscheidet sich nur geringfügig

• intuitiver, kurzer, gut überschaubarer undcompilerfreundlicher Quelltext

• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld geeignet

Nachteile: viele Vergleiche, daher langsam auch im Best Case

Einführung in die Programmierung Thomas Hinze

Page 72: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – Vorteile und Einsatzgebiete

• kaum Hilfsspeicher benötigt (nur Laufvariablen und min)• wenig Umspeichervorgänge (Vertauschungen) im Feld• jedes Feldelement höchstens einmal bewegt• sortierbegleitend entsteht fertig sortierter Bereich, der

schon ausgelesen werden kann, während an anderenStellen im Feld noch sortiert wird

• Laufzeitverhalten im Best Case und Worst Caseunterscheidet sich nur geringfügig

• intuitiver, kurzer, gut überschaubarer undcompilerfreundlicher Quelltext

• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld geeignet

Nachteile: viele Vergleiche, daher langsam auch im Best Case

Einführung in die Programmierung Thomas Hinze

Page 73: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – Vorteile und Einsatzgebiete

• kaum Hilfsspeicher benötigt (nur Laufvariablen und min)• wenig Umspeichervorgänge (Vertauschungen) im Feld• jedes Feldelement höchstens einmal bewegt• sortierbegleitend entsteht fertig sortierter Bereich, der

schon ausgelesen werden kann, während an anderenStellen im Feld noch sortiert wird

• Laufzeitverhalten im Best Case und Worst Caseunterscheidet sich nur geringfügig

• intuitiver, kurzer, gut überschaubarer undcompilerfreundlicher Quelltext

• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld geeignet

Nachteile: viele Vergleiche, daher langsam auch im Best Case

Einführung in die Programmierung Thomas Hinze

Page 74: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – Vorteile und Einsatzgebiete

• kaum Hilfsspeicher benötigt (nur Laufvariablen und min)• wenig Umspeichervorgänge (Vertauschungen) im Feld• jedes Feldelement höchstens einmal bewegt• sortierbegleitend entsteht fertig sortierter Bereich, der

schon ausgelesen werden kann, während an anderenStellen im Feld noch sortiert wird

• Laufzeitverhalten im Best Case und Worst Caseunterscheidet sich nur geringfügig

• intuitiver, kurzer, gut überschaubarer undcompilerfreundlicher Quelltext

• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld geeignet

Nachteile: viele Vergleiche, daher langsam auch im Best Case

Einführung in die Programmierung Thomas Hinze

Page 75: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – Vorteile und Einsatzgebiete

• kaum Hilfsspeicher benötigt (nur Laufvariablen und min)• wenig Umspeichervorgänge (Vertauschungen) im Feld• jedes Feldelement höchstens einmal bewegt• sortierbegleitend entsteht fertig sortierter Bereich, der

schon ausgelesen werden kann, während an anderenStellen im Feld noch sortiert wird

• Laufzeitverhalten im Best Case und Worst Caseunterscheidet sich nur geringfügig

• intuitiver, kurzer, gut überschaubarer undcompilerfreundlicher Quelltext

• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld geeignet

Nachteile: viele Vergleiche, daher langsam auch im Best Case

Einführung in die Programmierung Thomas Hinze

Page 76: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – Vorteile und Einsatzgebiete

• kaum Hilfsspeicher benötigt (nur Laufvariablen und min)• wenig Umspeichervorgänge (Vertauschungen) im Feld• jedes Feldelement höchstens einmal bewegt• sortierbegleitend entsteht fertig sortierter Bereich, der

schon ausgelesen werden kann, während an anderenStellen im Feld noch sortiert wird

• Laufzeitverhalten im Best Case und Worst Caseunterscheidet sich nur geringfügig

• intuitiver, kurzer, gut überschaubarer undcompilerfreundlicher Quelltext

• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld geeignet

Nachteile: viele Vergleiche, daher langsam auch im Best Case

Einführung in die Programmierung Thomas Hinze

Page 77: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Selectionsort – Vorteile und Einsatzgebiete

• kaum Hilfsspeicher benötigt (nur Laufvariablen und min)• wenig Umspeichervorgänge (Vertauschungen) im Feld• jedes Feldelement höchstens einmal bewegt• sortierbegleitend entsteht fertig sortierter Bereich, der

schon ausgelesen werden kann, während an anderenStellen im Feld noch sortiert wird

• Laufzeitverhalten im Best Case und Worst Caseunterscheidet sich nur geringfügig

• intuitiver, kurzer, gut überschaubarer undcompilerfreundlicher Quelltext

• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld geeignet

Nachteile: viele Vergleiche, daher langsam auch im Best Case

Einführung in die Programmierung Thomas Hinze

Page 78: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

InsertionsortSortieren durch Einfügen nach Vorbild des Kartenspielers

Bubblesort

Insertionsort

SelectionsortRadixsort

Bucketsort

Flashsort

HeapsortQuicksort

Shellsort

Bogosort

Odd−even sort

Mergesort

Sortiernetz Bitonisches Mischen

Einführung in die Programmierung Thomas Hinze

Page 79: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – Idee

Kartenspieler fügt Karte für Karte an der richtigen Stelle ein

Einführung in die Programmierung Thomas Hinze

Page 80: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Aufsteigend sortiertes Teilfeld, in das eingefügt wird: blau.Teilfeld, dessen Elemente noch eingefügt werden müssen: grau.Entnimm Element a[1]

Einführung in die Programmierung Thomas Hinze

Page 81: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Aufsteigend sortiertes Teilfeld, in das eingefügt wird: blau.Teilfeld, dessen Elemente noch eingefügt werden müssen: grau.Entnimm Element a[1]

Einführung in die Programmierung Thomas Hinze

Page 82: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Durchlaufe sortiertes Teilfeld von rechts nach links bis zurEinfügeposition. Verschiebe dabei Elemente um eine Position nachrechts, bis Lücke an der passenden Stelle.

Einführung in die Programmierung Thomas Hinze

Page 83: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Aufsteigend sortiertes Teilfeld, in das eingefügt wird: blau.Teilfeld, dessen Elemente noch eingefügt werden müssen: grau.Entnimm Element a[2]

Einführung in die Programmierung Thomas Hinze

Page 84: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Aufsteigend sortiertes Teilfeld, in das eingefügt wird: blau.Teilfeld, dessen Elemente noch eingefügt werden müssen: grau.Entnimm Element a[2]

Einführung in die Programmierung Thomas Hinze

Page 85: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Durchlaufe sortiertes Teilfeld von rechts nach links bis zurEinfügeposition. Verschiebe dabei Elemente um eine Position nachrechts, bis Lücke an der passenden Stelle.

Einführung in die Programmierung Thomas Hinze

Page 86: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Durchlaufe sortiertes Teilfeld von rechts nach links bis zurEinfügeposition. Verschiebe dabei Elemente um eine Position nachrechts, bis Lücke an der passenden Stelle.

Einführung in die Programmierung Thomas Hinze

Page 87: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Aufsteigend sortiertes Teilfeld, in das eingefügt wird: blau.Teilfeld, dessen Elemente noch eingefügt werden müssen: grau.Entnimm Element a[3]

Einführung in die Programmierung Thomas Hinze

Page 88: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Aufsteigend sortiertes Teilfeld, in das eingefügt wird: blau.Teilfeld, dessen Elemente noch eingefügt werden müssen: grau.Entnimm Element a[3]

Einführung in die Programmierung Thomas Hinze

Page 89: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Durchlaufe sortiertes Teilfeld von rechts nach links bis zurEinfügeposition. Verschiebe dabei Elemente um eine Position nachrechts, bis Lücke an der passenden Stelle.

Einführung in die Programmierung Thomas Hinze

Page 90: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Durchlaufe sortiertes Teilfeld von rechts nach links bis zurEinfügeposition. Verschiebe dabei Elemente um eine Position nachrechts, bis Lücke an der passenden Stelle.

Einführung in die Programmierung Thomas Hinze

Page 91: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Aufsteigend sortiertes Teilfeld, in das eingefügt wird: blau.Teilfeld, dessen Elemente noch eingefügt werden müssen: grau.Entnimm Element a[4]

Einführung in die Programmierung Thomas Hinze

Page 92: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Aufsteigend sortiertes Teilfeld, in das eingefügt wird: blau.Teilfeld, dessen Elemente noch eingefügt werden müssen: grau.Entnimm Element a[4]

Einführung in die Programmierung Thomas Hinze

Page 93: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Durchlaufe sortiertes Teilfeld von rechts nach links bis zurEinfügeposition. Verschiebe dabei Elemente um eine Position nachrechts, bis Lücke an der passenden Stelle.

Einführung in die Programmierung Thomas Hinze

Page 94: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Durchlaufe sortiertes Teilfeld von rechts nach links bis zurEinfügeposition. Verschiebe dabei Elemente um eine Position nachrechts, bis Lücke an der passenden Stelle.

Einführung in die Programmierung Thomas Hinze

Page 95: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Durchlaufe sortiertes Teilfeld von rechts nach links bis zurEinfügeposition. Verschiebe dabei Elemente um eine Position nachrechts, bis Lücke an der passenden Stelle.

Einführung in die Programmierung Thomas Hinze

Page 96: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Aufsteigend sortiertes Teilfeld, in das eingefügt wird: blau.Teilfeld, dessen Elemente noch eingefügt werden müssen: grau.Entnimm Element a[5]

Einführung in die Programmierung Thomas Hinze

Page 97: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Aufsteigend sortiertes Teilfeld, in das eingefügt wird: blau.Teilfeld, dessen Elemente noch eingefügt werden müssen: grau.Entnimm Element a[5]

Einführung in die Programmierung Thomas Hinze

Page 98: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – IdeeSortieren durch Einfügen nach Vorbild des Kartenspielers

Durchlaufe sortiertes Teilfeld von rechts nach links bis zurEinfügeposition. Kein Verschieben notwendig, direkt in Lückeeinfügen. Fertig.

Einführung in die Programmierung Thomas Hinze

Page 99: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort ausprogrammiertInsertionsort.java – Methode zum aufsteigenden In-place-Sortieren des Feldes a

Einführung in die Programmierung Thomas Hinze

Page 100: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort ausprogrammiertInsertionsort.java – main-Methode und Initialisierung des zu sortierenden Feldes

Einführung in die Programmierung Thomas Hinze

Page 101: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Insertionsort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . iterativ, vergleichsbasiert

Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . in-place, stabil

Worst Case . . . . . . . . . . . . Folge anfänglich absteigend geordnet

Best Case . . . . . . . . Folge anfänglich schon aufsteigend sortiert

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Vergleiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . ≤ n · (n − 1)/2

Anzahl Elementverschiebungen . . . . . . . . . . . . . . . . . . . . . . . .< n2

Zeitkomplexität im Worst Case . . . . . . . . . . . . . . . . . . . . . . . . O(n2)

Einführung in die Programmierung Thomas Hinze

Page 102: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Insertionsort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . iterativ, vergleichsbasiert

Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . in-place, stabil

Worst Case . . . . . . . . . . . . Folge anfänglich absteigend geordnet

Best Case . . . . . . . . Folge anfänglich schon aufsteigend sortiert

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Vergleiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . ≤ n · (n − 1)/2

Anzahl Elementverschiebungen . . . . . . . . . . . . . . . . . . . . . . . .< n2

Zeitkomplexität im Worst Case . . . . . . . . . . . . . . . . . . . . . . . . O(n2)

Einführung in die Programmierung Thomas Hinze

Page 103: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Insertionsort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . iterativ, vergleichsbasiert

Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . in-place, stabil

Worst Case . . . . . . . . . . . . Folge anfänglich absteigend geordnet

Best Case . . . . . . . . Folge anfänglich schon aufsteigend sortiert

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Vergleiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . ≤ n · (n − 1)/2

Anzahl Elementverschiebungen . . . . . . . . . . . . . . . . . . . . . . . .< n2

Zeitkomplexität im Worst Case . . . . . . . . . . . . . . . . . . . . . . . . O(n2)

Einführung in die Programmierung Thomas Hinze

Page 104: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Insertionsort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . iterativ, vergleichsbasiert

Eigenschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . in-place, stabil

Worst Case . . . . . . . . . . . . Folge anfänglich absteigend geordnet

Best Case . . . . . . . . Folge anfänglich schon aufsteigend sortiert

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Vergleiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . ≤ n · (n − 1)/2

Anzahl Elementverschiebungen . . . . . . . . . . . . . . . . . . . . . . . .< n2

Zeitkomplexität im Worst Case . . . . . . . . . . . . . . . . . . . . . . . . O(n2)

Einführung in die Programmierung Thomas Hinze

Page 105: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – Vorteile und Einsatzgebiete• kaum Hilfsspeicher benötigt (nur Laufvariablen und h)• im Best Case lineares Verhalten O(n) (wenig Vergleiche,

kein Verschieben)• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld sehr gut

geeignet, arbeitet dort schneller, da kein Verschieben vonElementen erfolgen muss, um Platz an der Einfügepositionzu schaffen.

• vorteilhaft für vorsortierte Datenbestände, in die neueSchlüssel eingefügt werden

Nachteile: außerhalb des Best Case vieleUmspeichervorgänge

Einführung in die Programmierung Thomas Hinze

Page 106: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – Vorteile und Einsatzgebiete• kaum Hilfsspeicher benötigt (nur Laufvariablen und h)• im Best Case lineares Verhalten O(n) (wenig Vergleiche,

kein Verschieben)• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld sehr gut

geeignet, arbeitet dort schneller, da kein Verschieben vonElementen erfolgen muss, um Platz an der Einfügepositionzu schaffen.

• vorteilhaft für vorsortierte Datenbestände, in die neueSchlüssel eingefügt werden

Nachteile: außerhalb des Best Case vieleUmspeichervorgänge

Einführung in die Programmierung Thomas Hinze

Page 107: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – Vorteile und Einsatzgebiete• kaum Hilfsspeicher benötigt (nur Laufvariablen und h)• im Best Case lineares Verhalten O(n) (wenig Vergleiche,

kein Verschieben)• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld sehr gut

geeignet, arbeitet dort schneller, da kein Verschieben vonElementen erfolgen muss, um Platz an der Einfügepositionzu schaffen.

• vorteilhaft für vorsortierte Datenbestände, in die neueSchlüssel eingefügt werden

Nachteile: außerhalb des Best Case vieleUmspeichervorgänge

Einführung in die Programmierung Thomas Hinze

Page 108: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – Vorteile und Einsatzgebiete• kaum Hilfsspeicher benötigt (nur Laufvariablen und h)• im Best Case lineares Verhalten O(n) (wenig Vergleiche,

kein Verschieben)• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld sehr gut

geeignet, arbeitet dort schneller, da kein Verschieben vonElementen erfolgen muss, um Platz an der Einfügepositionzu schaffen.

• vorteilhaft für vorsortierte Datenbestände, in die neueSchlüssel eingefügt werden

Nachteile: außerhalb des Best Case vieleUmspeichervorgänge

Einführung in die Programmierung Thomas Hinze

Page 109: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – Vorteile und Einsatzgebiete• kaum Hilfsspeicher benötigt (nur Laufvariablen und h)• im Best Case lineares Verhalten O(n) (wenig Vergleiche,

kein Verschieben)• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld sehr gut

geeignet, arbeitet dort schneller, da kein Verschieben vonElementen erfolgen muss, um Platz an der Einfügepositionzu schaffen.

• vorteilhaft für vorsortierte Datenbestände, in die neueSchlüssel eingefügt werden

Nachteile: außerhalb des Best Case vieleUmspeichervorgänge

Einführung in die Programmierung Thomas Hinze

Page 110: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – Vorteile und Einsatzgebiete• kaum Hilfsspeicher benötigt (nur Laufvariablen und h)• im Best Case lineares Verhalten O(n) (wenig Vergleiche,

kein Verschieben)• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld sehr gut

geeignet, arbeitet dort schneller, da kein Verschieben vonElementen erfolgen muss, um Platz an der Einfügepositionzu schaffen.

• vorteilhaft für vorsortierte Datenbestände, in die neueSchlüssel eingefügt werden

Nachteile: außerhalb des Best Case vieleUmspeichervorgänge

Einführung in die Programmierung Thomas Hinze

Page 111: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Insertionsort – Vorteile und Einsatzgebiete• kaum Hilfsspeicher benötigt (nur Laufvariablen und h)• im Best Case lineares Verhalten O(n) (wenig Vergleiche,

kein Verschieben)• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• Einsatz für kleinere Datenmengen (Richtwert: n ≤ 100)• zur Implementierung auf linearer Liste statt Feld sehr gut

geeignet, arbeitet dort schneller, da kein Verschieben vonElementen erfolgen muss, um Platz an der Einfügepositionzu schaffen.

• vorteilhaft für vorsortierte Datenbestände, in die neueSchlüssel eingefügt werden

Nachteile: außerhalb des Best Case vieleUmspeichervorgänge

Einführung in die Programmierung Thomas Hinze

Page 112: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

BucketsortSortieren durch Fachverteilen nach dem Vorbild der Briefpost

Bubblesort

Insertionsort

SelectionsortRadixsort

Bucketsort

Flashsort

HeapsortQuicksort

Shellsort

Bogosort

Odd−even sort

Mergesort

Sortiernetz Bitonisches Mischen

Einführung in die Programmierung Thomas Hinze

Page 113: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – Idee

www.deutschepost.de

Einsortieren von Briefen in Fächer nach Postleitzahlbereichenin einem Briefverteilungszentrum

Einführung in die Programmierung Thomas Hinze

Page 114: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

16 14 7 6 1 17 3 12 9 3

Phase 1: Größtes Element n im Feld a finden und n + 1 leere Fächer(buckets) im Feld b bereitstellen, Indizes 0 . . . n. Alle b[j] = 0

Einführung in die Programmierung Thomas Hinze

Page 115: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

16 14 7 6 1 17 3 12 9 3

Phase 1: Größtes Element n im Feld a finden und n + 1 leere Fächer(buckets) im Feld b bereitstellen, Indizes 0 . . . n. Alle b[j] = 0

Einführung in die Programmierung Thomas Hinze

Page 116: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

16 14 7 6 1 17 3 12 9 3

Phase 2: Befüllen der Fächer (buckets). Dazu wird Feld adurchlaufen und b[a[i]] um eins erhöht.

Einführung in die Programmierung Thomas Hinze

Page 117: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

16 14 7 6 1 17 3 12 9 3

Phase 2: Befüllen der Fächer (buckets). Dazu wird Feld adurchlaufen und b[a[i]] um eins erhöht.

Einführung in die Programmierung Thomas Hinze

Page 118: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

16 14 7 6 1 17 3 12 9 3

Phase 2: Befüllen der Fächer (buckets). Dazu wird Feld adurchlaufen und b[a[i]] um eins erhöht.

Einführung in die Programmierung Thomas Hinze

Page 119: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

16 14 7 6 1 17 3 12 9 3

Phase 2: Befüllen der Fächer (buckets). Dazu wird Feld adurchlaufen und b[a[i]] um eins erhöht.

Einführung in die Programmierung Thomas Hinze

Page 120: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

16 14 7 6 1 17 3 12 9 3

Phase 2: Befüllen der Fächer (buckets). Dazu wird Feld adurchlaufen und b[a[i]] um eins erhöht.

Einführung in die Programmierung Thomas Hinze

Page 121: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

16 14 7 6 1 17 3 12 9 3

Phase 2: Befüllen der Fächer (buckets). Dazu wird Feld adurchlaufen und b[a[i]] um eins erhöht.

Einführung in die Programmierung Thomas Hinze

Page 122: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

16 14 7 6 1 17 3 12 9 3

Phase 2: Befüllen der Fächer (buckets). Dazu wird Feld adurchlaufen und b[a[i]] um eins erhöht.

Einführung in die Programmierung Thomas Hinze

Page 123: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

16 14 7 6 1 17 3 12 9 3

Phase 2: Befüllen der Fächer (buckets). Dazu wird Feld adurchlaufen und b[a[i]] um eins erhöht.

Einführung in die Programmierung Thomas Hinze

Page 124: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

16 14 7 6 1 17 3 12 9 3

Phase 2: Befüllen der Fächer (buckets). Dazu wird Feld adurchlaufen und b[a[i]] um eins erhöht.

Einführung in die Programmierung Thomas Hinze

Page 125: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

16 14 7 6 1 17 3 12 9 3

Phase 2: Befüllen der Fächer (buckets). Dazu wird Feld adurchlaufen und b[a[i]] um eins erhöht.

Einführung in die Programmierung Thomas Hinze

Page 126: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

16 14 7 6 1 17 3 12 9 3

Phase 2: Befüllen der Fächer (buckets). Dazu wird Feld adurchlaufen und b[a[i]] um eins erhöht.

Einführung in die Programmierung Thomas Hinze

Page 127: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

1 14 7 6 1 17 3 12 9 3

Phase 3: Bucket-Feld b durchlaufen. Immer dann, wenn b[k] > 0,den Wert k ins Feld a b[k]-mal hintereinander zurückschreiben.

Einführung in die Programmierung Thomas Hinze

Page 128: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

1 3 3 6 1 17 3 12 9 3

Phase 3: Bucket-Feld b durchlaufen. Immer dann, wenn b[k] > 0,den Wert k ins Feld a b[k]-mal hintereinander zurückschreiben.

Einführung in die Programmierung Thomas Hinze

Page 129: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

1 3 3 6 1 17 3 12 9 3

Phase 3: Bucket-Feld b durchlaufen. Immer dann, wenn b[k] > 0,den Wert k ins Feld a b[k]-mal hintereinander zurückschreiben.

Einführung in die Programmierung Thomas Hinze

Page 130: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

1 3 3 6 7 17 3 12 9 3

Phase 3: Bucket-Feld b durchlaufen. Immer dann, wenn b[k] > 0,den Wert k ins Feld a b[k]-mal hintereinander zurückschreiben.

Einführung in die Programmierung Thomas Hinze

Page 131: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

1 3 3 6 7 9 3 12 9 3

Phase 3: Bucket-Feld b durchlaufen. Immer dann, wenn b[k] > 0,den Wert k ins Feld a b[k]-mal hintereinander zurückschreiben.

Einführung in die Programmierung Thomas Hinze

Page 132: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

1 3 3 6 7 9 12 12 9 3

Phase 3: Bucket-Feld b durchlaufen. Immer dann, wenn b[k] > 0,den Wert k ins Feld a b[k]-mal hintereinander zurückschreiben.

Einführung in die Programmierung Thomas Hinze

Page 133: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

1 3 3 6 7 9 12 14 9 3

Phase 3: Bucket-Feld b durchlaufen. Immer dann, wenn b[k] > 0,den Wert k ins Feld a b[k]-mal hintereinander zurückschreiben.

Einführung in die Programmierung Thomas Hinze

Page 134: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

1 3 3 6 7 9 12 14 16 3

Phase 3: Bucket-Feld b durchlaufen. Immer dann, wenn b[k] > 0,den Wert k ins Feld a b[k]-mal hintereinander zurückschreiben.

Einführung in die Programmierung Thomas Hinze

Page 135: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – IdeeSortieren durch Fachverteilen nach dem Vorbild der Briefpost

b[0] b[1] b[2] b[3] b[4] b[5]

b[6] b[7] b[8] b[9] b[10] b[11]

b[12] b[13] b[14] b[15] b[16] b[17]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9]

1 3 3 6 7 9 12 14 16 17

Phase 3: Bucket-Feld b durchlaufen. Immer dann, wenn b[k] > 0,den Wert k ins Feld a b[k]-mal hintereinander zurückschreiben.

Einführung in die Programmierung Thomas Hinze

Page 136: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort ausprogrammiertBucketsort.java – Methode zum aufsteigenden Sortieren des Feldes a

Einführung in die Programmierung Thomas Hinze

Page 137: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort ausprogrammiertBucketsort.java – main-Methode und Initialisierung des zu sortierenden Feldes

Einführung in die Programmierung Thomas Hinze

Page 138: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Bucketsort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . iterativ, ohne Vergleiche

Eigenschaften . . . . . . . . . . . . . . . . . . ex-situ (nicht in-place), stabil

Worst Case . . Worst Case und Best Case nicht unterscheidbar

Best Case . . . . . . . . . . . .beliebige Permutation der Feldelemente

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Buckets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . m

Anzahl Arbeitsschritte . . . . . . . . . . . . . . . . . . . . . . . ungefähr n + m

Zeitkomplexität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O(n + m)

Einführung in die Programmierung Thomas Hinze

Page 139: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Bucketsort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . iterativ, ohne Vergleiche

Eigenschaften . . . . . . . . . . . . . . . . . . ex-situ (nicht in-place), stabil

Worst Case . . Worst Case und Best Case nicht unterscheidbar

Best Case . . . . . . . . . . . .beliebige Permutation der Feldelemente

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Buckets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . m

Anzahl Arbeitsschritte . . . . . . . . . . . . . . . . . . . . . . . ungefähr n + m

Zeitkomplexität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O(n + m)

Einführung in die Programmierung Thomas Hinze

Page 140: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Bucketsort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . iterativ, ohne Vergleiche

Eigenschaften . . . . . . . . . . . . . . . . . . ex-situ (nicht in-place), stabil

Worst Case . . Worst Case und Best Case nicht unterscheidbar

Best Case . . . . . . . . . . . .beliebige Permutation der Feldelemente

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Buckets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . m

Anzahl Arbeitsschritte . . . . . . . . . . . . . . . . . . . . . . . ungefähr n + m

Zeitkomplexität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O(n + m)

Einführung in die Programmierung Thomas Hinze

Page 141: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Bucketsort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . . . iterativ, ohne Vergleiche

Eigenschaften . . . . . . . . . . . . . . . . . . ex-situ (nicht in-place), stabil

Worst Case . . Worst Case und Best Case nicht unterscheidbar

Best Case . . . . . . . . . . . .beliebige Permutation der Feldelemente

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Buckets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . m

Anzahl Arbeitsschritte . . . . . . . . . . . . . . . . . . . . . . . ungefähr n + m

Zeitkomplexität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . O(n + m)

Einführung in die Programmierung Thomas Hinze

Page 142: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – Vorteile und Einsatzgebiete

• äußerst schnelles Sortierverfahren, das zudem keineElementvergleiche benötigt

• geeignet für große Datenmengen, wenn die Schlüsseldurch natürliche Zahlen dargestellt sind und dieSchlüsselwerte eng beieinander liegen

• stets lineares Verhalten O(n + m)

• Laufzeitverhalten im Best Case und Worst Case identisch• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• vorteilhaft für große Anzahlen von 0 an durchnummerierter

Objekte

Nachteile: hoher Hilfsspeicherverbrauch, da oft viele Bucketsungenutzt. Eingeschränkt auf Sortierung natürlicher Zahlen

Einführung in die Programmierung Thomas Hinze

Page 143: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – Vorteile und Einsatzgebiete

• äußerst schnelles Sortierverfahren, das zudem keineElementvergleiche benötigt

• geeignet für große Datenmengen, wenn die Schlüsseldurch natürliche Zahlen dargestellt sind und dieSchlüsselwerte eng beieinander liegen

• stets lineares Verhalten O(n + m)

• Laufzeitverhalten im Best Case und Worst Case identisch• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• vorteilhaft für große Anzahlen von 0 an durchnummerierter

Objekte

Nachteile: hoher Hilfsspeicherverbrauch, da oft viele Bucketsungenutzt. Eingeschränkt auf Sortierung natürlicher Zahlen

Einführung in die Programmierung Thomas Hinze

Page 144: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – Vorteile und Einsatzgebiete

• äußerst schnelles Sortierverfahren, das zudem keineElementvergleiche benötigt

• geeignet für große Datenmengen, wenn die Schlüsseldurch natürliche Zahlen dargestellt sind und dieSchlüsselwerte eng beieinander liegen

• stets lineares Verhalten O(n + m)

• Laufzeitverhalten im Best Case und Worst Case identisch• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• vorteilhaft für große Anzahlen von 0 an durchnummerierter

Objekte

Nachteile: hoher Hilfsspeicherverbrauch, da oft viele Bucketsungenutzt. Eingeschränkt auf Sortierung natürlicher Zahlen

Einführung in die Programmierung Thomas Hinze

Page 145: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – Vorteile und Einsatzgebiete

• äußerst schnelles Sortierverfahren, das zudem keineElementvergleiche benötigt

• geeignet für große Datenmengen, wenn die Schlüsseldurch natürliche Zahlen dargestellt sind und dieSchlüsselwerte eng beieinander liegen

• stets lineares Verhalten O(n + m)

• Laufzeitverhalten im Best Case und Worst Case identisch• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• vorteilhaft für große Anzahlen von 0 an durchnummerierter

Objekte

Nachteile: hoher Hilfsspeicherverbrauch, da oft viele Bucketsungenutzt. Eingeschränkt auf Sortierung natürlicher Zahlen

Einführung in die Programmierung Thomas Hinze

Page 146: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – Vorteile und Einsatzgebiete

• äußerst schnelles Sortierverfahren, das zudem keineElementvergleiche benötigt

• geeignet für große Datenmengen, wenn die Schlüsseldurch natürliche Zahlen dargestellt sind und dieSchlüsselwerte eng beieinander liegen

• stets lineares Verhalten O(n + m)

• Laufzeitverhalten im Best Case und Worst Case identisch• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• vorteilhaft für große Anzahlen von 0 an durchnummerierter

Objekte

Nachteile: hoher Hilfsspeicherverbrauch, da oft viele Bucketsungenutzt. Eingeschränkt auf Sortierung natürlicher Zahlen

Einführung in die Programmierung Thomas Hinze

Page 147: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – Vorteile und Einsatzgebiete

• äußerst schnelles Sortierverfahren, das zudem keineElementvergleiche benötigt

• geeignet für große Datenmengen, wenn die Schlüsseldurch natürliche Zahlen dargestellt sind und dieSchlüsselwerte eng beieinander liegen

• stets lineares Verhalten O(n + m)

• Laufzeitverhalten im Best Case und Worst Case identisch• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• vorteilhaft für große Anzahlen von 0 an durchnummerierter

Objekte

Nachteile: hoher Hilfsspeicherverbrauch, da oft viele Bucketsungenutzt. Eingeschränkt auf Sortierung natürlicher Zahlen

Einführung in die Programmierung Thomas Hinze

Page 148: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Bucketsort – Vorteile und Einsatzgebiete

• äußerst schnelles Sortierverfahren, das zudem keineElementvergleiche benötigt

• geeignet für große Datenmengen, wenn die Schlüsseldurch natürliche Zahlen dargestellt sind und dieSchlüsselwerte eng beieinander liegen

• stets lineares Verhalten O(n + m)

• Laufzeitverhalten im Best Case und Worst Case identisch• intuitiver, kurzer, gut überschaubarer und

compilerfreundlicher Quelltext• vorteilhaft für große Anzahlen von 0 an durchnummerierter

Objekte

Nachteile: hoher Hilfsspeicherverbrauch, da oft viele Bucketsungenutzt. Eingeschränkt auf Sortierung natürlicher Zahlen

Einführung in die Programmierung Thomas Hinze

Page 149: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

MergesortSortieren durch ordnendes Mischen wachsender Teilfolgen

Bubblesort

Insertionsort

SelectionsortRadixsort

Bucketsort

Flashsort

HeapsortQuicksort

Shellsort

Bogosort

Odd−even sort

Mergesort

Sortiernetz Bitonisches Mischen

Einführung in die Programmierung Thomas Hinze

Page 150: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mischen als Sortieridee von MergesortZwei vorsortierte Teilfelder werden durch Mischen zu eineminsgesamt sortierten Feld im „Reißverschlussverfahren“

Beispiel

Mischergebnis als sortiertes Feld, das die beiden Teilfelder vereinigt

2 5 8 9

4 5 6 10

vorsortiertes Teilfeld

vorsortiertes Teilfeld

Einführung in die Programmierung Thomas Hinze

Page 151: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mischen als Sortieridee von MergesortZwei vorsortierte Teilfelder werden durch Mischen zu eineminsgesamt sortierten Feld im „Reißverschlussverfahren“

Beispiel

Mischergebnis als sortiertes Feld, das die beiden Teilfelder vereinigt

5 8 9

4 5 6 10

2

vorsortiertes Teilfeld

vorsortiertes Teilfeld

Einführung in die Programmierung Thomas Hinze

Page 152: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mischen als Sortieridee von MergesortZwei vorsortierte Teilfelder werden durch Mischen zu eineminsgesamt sortierten Feld im „Reißverschlussverfahren“

Beispiel

Mischergebnis als sortiertes Feld, das die beiden Teilfelder vereinigt

5 8 9

5 6 10

2 4

vorsortiertes Teilfeld

vorsortiertes Teilfeld

Einführung in die Programmierung Thomas Hinze

Page 153: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mischen als Sortieridee von MergesortZwei vorsortierte Teilfelder werden durch Mischen zu eineminsgesamt sortierten Feld im „Reißverschlussverfahren“

Beispiel

Mischergebnis als sortiertes Feld, das die beiden Teilfelder vereinigt

8 9

5 6 10

2 4 5

vorsortiertes Teilfeld

vorsortiertes Teilfeld

Einführung in die Programmierung Thomas Hinze

Page 154: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mischen als Sortieridee von MergesortZwei vorsortierte Teilfelder werden durch Mischen zu eineminsgesamt sortierten Feld im „Reißverschlussverfahren“

Beispiel

Mischergebnis als sortiertes Feld, das die beiden Teilfelder vereinigt

8 9

6 10

2 4 5 5

vorsortiertes Teilfeld

vorsortiertes Teilfeld

Einführung in die Programmierung Thomas Hinze

Page 155: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mischen als Sortieridee von MergesortZwei vorsortierte Teilfelder werden durch Mischen zu eineminsgesamt sortierten Feld im „Reißverschlussverfahren“

Beispiel

Mischergebnis als sortiertes Feld, das die beiden Teilfelder vereinigt

8 9

10

2 4 5 5 6

vorsortiertes Teilfeld

vorsortiertes Teilfeld

Einführung in die Programmierung Thomas Hinze

Page 156: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mischen als Sortieridee von MergesortZwei vorsortierte Teilfelder werden durch Mischen zu eineminsgesamt sortierten Feld im „Reißverschlussverfahren“

Beispiel

Mischergebnis als sortiertes Feld, das die beiden Teilfelder vereinigt

9

10

2 4 5 5 6 8

vorsortiertes Teilfeld

vorsortiertes Teilfeld

Einführung in die Programmierung Thomas Hinze

Page 157: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mischen als Sortieridee von MergesortZwei vorsortierte Teilfelder werden durch Mischen zu eineminsgesamt sortierten Feld im „Reißverschlussverfahren“

Beispiel

Mischergebnis als sortiertes Feld, das die beiden Teilfelder vereinigt

10

2 4 5 5 6 8 9

vorsortiertes Teilfeld

vorsortiertes Teilfeld

Einführung in die Programmierung Thomas Hinze

Page 158: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mischen als Sortieridee von MergesortZwei vorsortierte Teilfelder werden durch Mischen zu eineminsgesamt sortierten Feld im „Reißverschlussverfahren“

Beispiel

Mischergebnis als sortiertes Feld, das die beiden Teilfelder vereinigt

2 4 5 5 6 8 9 10

vorsortiertes Teilfeld

vorsortiertes Teilfeld

Einführung in die Programmierung Thomas Hinze

Page 159: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mischen als Sortieridee von MergesortZwei vorsortierte Teilfelder werden durch Mischen zu eineminsgesamt sortierten Feld im „Reißverschlussverfahren“

Beispiel

Mischergebnis als sortiertes Feld, das beide Teilfelder vereinigt

vorsortiertes Teilfeld

2 4 5 5 6 8 9 10

vorsortiertes Teilfeld

Einführung in die Programmierung Thomas Hinze

Page 160: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – rekursives SortierenZu sortierendes Feld zuerst schrittweise immer weiter teilen,bis ausschließlich einelementige Teilfelder entstanden sind.

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]

10 5 6 49 8 2 5

2 5

2 5

9 8

9 8

2 589

10 5

10 5 6 4

6 4

10 5 6 4

Anschließend im rekursiven Aufstieg Mischen von je zweibenachbarten vorsortierten Teilfeldern, bis Gesamtfeld sortiert

Einführung in die Programmierung Thomas Hinze

Page 161: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – rekursives SortierenMischen von je zwei benachbarten vorsortierten Teilfeldern, bisGesamtfeld sortiert

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]

2 589 10 5 6 4

Einführung in die Programmierung Thomas Hinze

Page 162: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – rekursives SortierenMischen von je zwei benachbarten vorsortierten Teilfeldern, bisGesamtfeld sortiert

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]

2 589 10 5 6 4

8 9

Einführung in die Programmierung Thomas Hinze

Page 163: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – rekursives SortierenMischen von je zwei benachbarten vorsortierten Teilfeldern, bisGesamtfeld sortiert

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]

2 589 10 5 6 4

2 58 9

Einführung in die Programmierung Thomas Hinze

Page 164: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – rekursives SortierenMischen von je zwei benachbarten vorsortierten Teilfeldern, bisGesamtfeld sortiert

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]

2 589 10 5 6 4

2 58 9

52 8 9

Einführung in die Programmierung Thomas Hinze

Page 165: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – rekursives SortierenMischen von je zwei benachbarten vorsortierten Teilfeldern, bisGesamtfeld sortiert

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]

2 589 10 5 6 4

2 5 5 108 9

52 8 9

Einführung in die Programmierung Thomas Hinze

Page 166: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – rekursives SortierenMischen von je zwei benachbarten vorsortierten Teilfeldern, bisGesamtfeld sortiert

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]

2 589 10 5 6 4

2 5 5 10 4 68 9

52 8 9

Einführung in die Programmierung Thomas Hinze

Page 167: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – rekursives SortierenMischen von je zwei benachbarten vorsortierten Teilfeldern, bisGesamtfeld sortiert

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]

2 589 10 5 6 4

2 5 5 10 4 68 9

52 8 9 54 6 10

Einführung in die Programmierung Thomas Hinze

Page 168: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – rekursives SortierenMischen von je zwei benachbarten vorsortierten Teilfeldern, bisGesamtfeld sortiert

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]

a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7]

2 589 10 5 6 4

2 5 5 10 4 68 9

52 8 9 54 6 10

5542 6 8 9 10

Einführung in die Programmierung Thomas Hinze

Page 169: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort ausprogrammiertMergesort.java – Methode merge zum Mischen zweier Teilfelder

Einführung in die Programmierung Thomas Hinze

Page 170: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort ausprogrammiertMergesort.java – Methode mergesort zur rekursiven Ablaufsteuerung und main

Einführung in die Programmierung Thomas Hinze

Page 171: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Mergesort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . rekursiv, vergleichsbasiert

Eigenschaften . . . . . . . . . . . . . . . . . . ex-situ (nicht in-place), stabil

Worst Case . Worst Case und Best Case kaum unterscheidbar

Best Case . . . . jeweils beliebige Permutation der Feldelemente

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Vergleiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .≈ n · ld(n)

Anzahl Elementverschiebungen . . . . . . . . . . . . . . . . . . ≈ n · ld(n)

Zeitkomplexität im Worst Case . . . . . . . . . . . . . . . . . O(n · log(n))

Einführung in die Programmierung Thomas Hinze

Page 172: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Mergesort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . rekursiv, vergleichsbasiert

Eigenschaften . . . . . . . . . . . . . . . . . . ex-situ (nicht in-place), stabil

Worst Case . Worst Case und Best Case kaum unterscheidbar

Best Case . . . . jeweils beliebige Permutation der Feldelemente

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Vergleiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .≈ n · ld(n)

Anzahl Elementverschiebungen . . . . . . . . . . . . . . . . . . ≈ n · ld(n)

Zeitkomplexität im Worst Case . . . . . . . . . . . . . . . . . O(n · log(n))

Einführung in die Programmierung Thomas Hinze

Page 173: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Mergesort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . rekursiv, vergleichsbasiert

Eigenschaften . . . . . . . . . . . . . . . . . . ex-situ (nicht in-place), stabil

Worst Case . Worst Case und Best Case kaum unterscheidbar

Best Case . . . . jeweils beliebige Permutation der Feldelemente

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Vergleiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .≈ n · ld(n)

Anzahl Elementverschiebungen . . . . . . . . . . . . . . . . . . ≈ n · ld(n)

Zeitkomplexität im Worst Case . . . . . . . . . . . . . . . . . O(n · log(n))

Einführung in die Programmierung Thomas Hinze

Page 174: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Steckbrief Mergesort zum aufsteigenden Sortieren

Algorithmus . . . . . . . . . . . . . . . . . . . . . . . rekursiv, vergleichsbasiert

Eigenschaften . . . . . . . . . . . . . . . . . . ex-situ (nicht in-place), stabil

Worst Case . Worst Case und Best Case kaum unterscheidbar

Best Case . . . . jeweils beliebige Permutation der Feldelemente

Problemgröße n . . . . . . . . Anzahl zu sortierender Feldelemente

Anzahl Vergleiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .≈ n · ld(n)

Anzahl Elementverschiebungen . . . . . . . . . . . . . . . . . . ≈ n · ld(n)

Zeitkomplexität im Worst Case . . . . . . . . . . . . . . . . . O(n · log(n))

Einführung in die Programmierung Thomas Hinze

Page 175: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – Vorteile und Einsatzgebiete

• schnelles vergleichsbasiertes Sortierverfahren• geeignet für große Datenmengen• Laufzeitverhalten im Best Case und Worst Case nahezu

identisch und mit O(n · log(n)) nahezu am OptimumO(log(n!)) für sequentielle vergleichsbasierte Verfahren

• gut auf linearen Listen anstelle Feld implementierbar• lässt sich gut parallelisieren• durch rekursiven Ansatz auch zur Implementierung in

funktionalen Programmiersprachen geeignet

Nachteile: hoher Hilfsspeicherverbrauch bedingt durchRekursion

Einführung in die Programmierung Thomas Hinze

Page 176: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – Vorteile und Einsatzgebiete

• schnelles vergleichsbasiertes Sortierverfahren• geeignet für große Datenmengen• Laufzeitverhalten im Best Case und Worst Case nahezu

identisch und mit O(n · log(n)) nahezu am OptimumO(log(n!)) für sequentielle vergleichsbasierte Verfahren

• gut auf linearen Listen anstelle Feld implementierbar• lässt sich gut parallelisieren• durch rekursiven Ansatz auch zur Implementierung in

funktionalen Programmiersprachen geeignet

Nachteile: hoher Hilfsspeicherverbrauch bedingt durchRekursion

Einführung in die Programmierung Thomas Hinze

Page 177: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – Vorteile und Einsatzgebiete

• schnelles vergleichsbasiertes Sortierverfahren• geeignet für große Datenmengen• Laufzeitverhalten im Best Case und Worst Case nahezu

identisch und mit O(n · log(n)) nahezu am OptimumO(log(n!)) für sequentielle vergleichsbasierte Verfahren

• gut auf linearen Listen anstelle Feld implementierbar• lässt sich gut parallelisieren• durch rekursiven Ansatz auch zur Implementierung in

funktionalen Programmiersprachen geeignet

Nachteile: hoher Hilfsspeicherverbrauch bedingt durchRekursion

Einführung in die Programmierung Thomas Hinze

Page 178: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – Vorteile und Einsatzgebiete

• schnelles vergleichsbasiertes Sortierverfahren• geeignet für große Datenmengen• Laufzeitverhalten im Best Case und Worst Case nahezu

identisch und mit O(n · log(n)) nahezu am OptimumO(log(n!)) für sequentielle vergleichsbasierte Verfahren

• gut auf linearen Listen anstelle Feld implementierbar• lässt sich gut parallelisieren• durch rekursiven Ansatz auch zur Implementierung in

funktionalen Programmiersprachen geeignet

Nachteile: hoher Hilfsspeicherverbrauch bedingt durchRekursion

Einführung in die Programmierung Thomas Hinze

Page 179: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – Vorteile und Einsatzgebiete

• schnelles vergleichsbasiertes Sortierverfahren• geeignet für große Datenmengen• Laufzeitverhalten im Best Case und Worst Case nahezu

identisch und mit O(n · log(n)) nahezu am OptimumO(log(n!)) für sequentielle vergleichsbasierte Verfahren

• gut auf linearen Listen anstelle Feld implementierbar• lässt sich gut parallelisieren• durch rekursiven Ansatz auch zur Implementierung in

funktionalen Programmiersprachen geeignet

Nachteile: hoher Hilfsspeicherverbrauch bedingt durchRekursion

Einführung in die Programmierung Thomas Hinze

Page 180: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – Vorteile und Einsatzgebiete

• schnelles vergleichsbasiertes Sortierverfahren• geeignet für große Datenmengen• Laufzeitverhalten im Best Case und Worst Case nahezu

identisch und mit O(n · log(n)) nahezu am OptimumO(log(n!)) für sequentielle vergleichsbasierte Verfahren

• gut auf linearen Listen anstelle Feld implementierbar• lässt sich gut parallelisieren• durch rekursiven Ansatz auch zur Implementierung in

funktionalen Programmiersprachen geeignet

Nachteile: hoher Hilfsspeicherverbrauch bedingt durchRekursion

Einführung in die Programmierung Thomas Hinze

Page 181: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Mergesort – Vorteile und Einsatzgebiete

• schnelles vergleichsbasiertes Sortierverfahren• geeignet für große Datenmengen• Laufzeitverhalten im Best Case und Worst Case nahezu

identisch und mit O(n · log(n)) nahezu am OptimumO(log(n!)) für sequentielle vergleichsbasierte Verfahren

• gut auf linearen Listen anstelle Feld implementierbar• lässt sich gut parallelisieren• durch rekursiven Ansatz auch zur Implementierung in

funktionalen Programmiersprachen geeignet

Nachteile: hoher Hilfsspeicherverbrauch bedingt durchRekursion

Einführung in die Programmierung Thomas Hinze

Page 182: Einführung in die Programmierung - users.fmi.uni-jena.dehinze/eidp-sose16/repository/eidp-vorlesungsteil08-sose... · Odd-even sort Mergesort Fachverteilen: sehr schnell, kommt ohne

Motivation Grundlagenwissen Selectionsort Insertionsort Bucketsort Mergesort Fazit

Vergleich der SortierverfahrenSelectionsort Insertionsort Bucketsort Mergesortiterativ iterativ iterativ rekursivinstabil∗ stabil stabil stabilin-place in-place ex-situ ex-situvergleichsbasiert vergleichsbasiert fachverteilend vergleichsbasiert

Zeitbedarf O(n2) O(n2) O(n + m) O(n · log(n))Speicherbed. niedrig niedrig sehr hoch hoch∗ allgemeine Grundversion, Verfahren auch stabil implementierbar

Zeitbedarf in Abhängigkeit von Problemgröße n im Vergleich

Einführung in die Programmierung Thomas Hinze


Recommended