Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Algorithmen und Datenstrukturen 12
Stefan Ploner
12. Juli 2012
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
1 Besprechung Blatt 11Fragen
2 Binary SearchBinare Suche in ArraysBinare Suchbaume (Binary Search Tree)
3 SortierverfahrenAllgemeinHeapsortBubblesortInsertionsortMergesortQuicksort
4 Vorbereitung Blatt 12Hinweise
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
1 Besprechung Blatt 11Fragen
2 Binary SearchBinare Suche in ArraysBinare Suchbaume (Binary Search Tree)
3 SortierverfahrenAllgemeinHeapsortBubblesortInsertionsortMergesortQuicksort
4 Vorbereitung Blatt 12Hinweise
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Fragen
Fragen zu Blatt 11?
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
1 Besprechung Blatt 11Fragen
2 Binary SearchBinare Suche in ArraysBinare Suchbaume (Binary Search Tree)
3 SortierverfahrenAllgemeinHeapsortBubblesortInsertionsortMergesortQuicksort
4 Vorbereitung Blatt 12Hinweise
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suche in Arrays
Zur Erinnerung: Binary Search sucht nach einem Element in einersortierten Datenstruktur nach dem Divide and Conquer Prinzip.
Vorraussetzungen• Sortiert
• Zugriff uber Index in O(1) ⇒ Arrays
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suche in Arrays
Algorithmus
• Array leer →
Element nicht enthalten
• sonst:
gesuchten Wert mit mittlerem Element vergleichen• Element gleich → gefunden• Element zu groß → gesuchtes Element liegt links• Element zu klein → gesuchtes Element liegt rechts
• beginne die Suche im eingegrenzten Array von Neuem
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suche in Arrays
Algorithmus
• Array leer → Element nicht enthalten
• sonst:
gesuchten Wert mit mittlerem Element vergleichen• Element gleich → gefunden• Element zu groß → gesuchtes Element liegt links• Element zu klein → gesuchtes Element liegt rechts
• beginne die Suche im eingegrenzten Array von Neuem
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suche in Arrays
Algorithmus
• Array leer → Element nicht enthalten
• sonst: gesuchten Wert mit mittlerem Element vergleichen
• Element gleich → gefunden• Element zu groß → gesuchtes Element liegt links• Element zu klein → gesuchtes Element liegt rechts
• beginne die Suche im eingegrenzten Array von Neuem
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suche in Arrays
Algorithmus
• Array leer → Element nicht enthalten
• sonst: gesuchten Wert mit mittlerem Element vergleichen• Element gleich → gefunden• Element zu groß → gesuchtes Element liegt links• Element zu klein → gesuchtes Element liegt rechts
• beginne die Suche im eingegrenzten Array von Neuem
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suche in Arrays
Algorithmus
• Array leer → Element nicht enthalten
• sonst: gesuchten Wert mit mittlerem Element vergleichen• Element gleich → gefunden• Element zu groß → gesuchtes Element liegt links• Element zu klein → gesuchtes Element liegt rechts
• beginne die Suche im eingegrenzten Array von Neuem
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suche in Arrays
Bei der binaren Suche ist es egal, ob man Zahlen oderirgendwelche anderen Elemente durchsucht, fur die eine festeOrdnung definiert ist. (→Comparable-Interface)
Problem• die Suche ist damit in logarithmischem Aufwand
• aber: Einfugen in sortiertes Array hat Aufwand O(n)!
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suche in Arrays
Bei der binaren Suche ist es egal, ob man Zahlen oderirgendwelche anderen Elemente durchsucht, fur die eine festeOrdnung definiert ist. (→Comparable-Interface)
Problem• die Suche ist damit in logarithmischem Aufwand
• aber: Einfugen in sortiertes Array hat Aufwand O(n)!
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Binare Suchbaume - Aufbau
(verzeigerte) Baumstruktur, das heißt:
• ein Wurzelelement (vgl. mit Head in Listen)
• mehrere Kinder erlaubt (hier Binarbaum → max. 2!)
• wie bei verketteten Listen ist der Speicherverbrauch dynamischvon der momentanen Anzahl der Elemente abhangig.
Anordnung (uber Wert selbst oder “Key” oder Comparator):
• “kleinere” Kinder links
• “großere” (und wenn erlaubt gleiche) Kinder rechts
• Elemente steigen von links nach rechts an
Im folgenden sind keine doppelten Keys (bzw. Werte, wenn nachdiesen sortiert wird) erlaubt.
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Binare Suchbaume - Aufbau
(verzeigerte) Baumstruktur, das heißt:
• ein Wurzelelement (vgl. mit Head in Listen)
• mehrere Kinder erlaubt (hier Binarbaum → max. 2!)
• wie bei verketteten Listen ist der Speicherverbrauch dynamischvon der momentanen Anzahl der Elemente abhangig.
Anordnung (uber Wert selbst oder “Key” oder Comparator):
• “kleinere” Kinder links
• “großere” (und wenn erlaubt gleiche) Kinder rechts
• Elemente steigen von links nach rechts an
Im folgenden sind keine doppelten Keys (bzw. Werte, wenn nachdiesen sortiert wird) erlaubt.
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Binare Suchbaume - Aufbau
(verzeigerte) Baumstruktur, das heißt:
• ein Wurzelelement (vgl. mit Head in Listen)
• mehrere Kinder erlaubt (hier Binarbaum → max. 2!)
• wie bei verketteten Listen ist der Speicherverbrauch dynamischvon der momentanen Anzahl der Elemente abhangig.
Anordnung (uber Wert selbst oder “Key” oder Comparator):
• “kleinere” Kinder links
• “großere” (und wenn erlaubt gleiche) Kinder rechts
• Elemente steigen von links nach rechts an
Im folgenden sind keine doppelten Keys (bzw. Werte, wenn nachdiesen sortiert wird) erlaubt.
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Suchen
• Baum leer →
Element nicht enthalten
• sonst: gesuchtes Element mit Wurzel vergleichen• Element gleich → gefunden• Element zu groß → ges. Element liegt in linkem Unterbaum• Element zu klein → ges. Element liegt in rechtem Unterbaum
• beginne die Suche im Unterbaum von Neuem
Im Prinzip eine binare Suche auf einer verzeigerten Datenstruktur.(Zugriff auf die Kinder in O(1))
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Suchen
• Baum leer → Element nicht enthalten
• sonst:
gesuchtes Element mit Wurzel vergleichen• Element gleich → gefunden• Element zu groß → ges. Element liegt in linkem Unterbaum• Element zu klein → ges. Element liegt in rechtem Unterbaum
• beginne die Suche im Unterbaum von Neuem
Im Prinzip eine binare Suche auf einer verzeigerten Datenstruktur.(Zugriff auf die Kinder in O(1))
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Suchen
• Baum leer → Element nicht enthalten
• sonst: gesuchtes Element mit Wurzel vergleichen
• Element gleich → gefunden• Element zu groß → ges. Element liegt in linkem Unterbaum• Element zu klein → ges. Element liegt in rechtem Unterbaum
• beginne die Suche im Unterbaum von Neuem
Im Prinzip eine binare Suche auf einer verzeigerten Datenstruktur.(Zugriff auf die Kinder in O(1))
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Suchen
• Baum leer → Element nicht enthalten
• sonst: gesuchtes Element mit Wurzel vergleichen• Element gleich → gefunden• Element zu groß → ges. Element liegt in linkem Unterbaum• Element zu klein → ges. Element liegt in rechtem Unterbaum
• beginne die Suche im Unterbaum von Neuem
Im Prinzip eine binare Suche auf einer verzeigerten Datenstruktur.(Zugriff auf die Kinder in O(1))
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Suchen
• Baum leer → Element nicht enthalten
• sonst: gesuchtes Element mit Wurzel vergleichen• Element gleich → gefunden• Element zu groß → ges. Element liegt in linkem Unterbaum• Element zu klein → ges. Element liegt in rechtem Unterbaum
• beginne die Suche im Unterbaum von Neuem
Im Prinzip eine binare Suche auf einer verzeigerten Datenstruktur.(Zugriff auf die Kinder in O(1))
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Suchen
• Baum leer → Element nicht enthalten
• sonst: gesuchtes Element mit Wurzel vergleichen• Element gleich → gefunden• Element zu groß → ges. Element liegt in linkem Unterbaum• Element zu klein → ges. Element liegt in rechtem Unterbaum
• beginne die Suche im Unterbaum von Neuem
Im Prinzip eine binare Suche auf einer verzeigerten Datenstruktur.(Zugriff auf die Kinder in O(1))
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Einfugen
• beginne mit einer Suche nach dem Elementdiese bricht an 2 Stellen ab:
• Abbruch bei leerem Restbaum → Element an diese Stelleeinfugen
• Element gefunden - je nach Wunsch• Element verwerfen, da bereits enthalten• bei Sortierung uber Keys konnte Aktualisieren des Inhalts
sinnvoll sein
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Einfugen
• beginne mit einer Suche nach dem Elementdiese bricht an 2 Stellen ab:
• Abbruch bei leerem Restbaum → Element an diese Stelleeinfugen
• Element gefunden - je nach Wunsch• Element verwerfen, da bereits enthalten• bei Sortierung uber Keys konnte Aktualisieren des Inhalts
sinnvoll sein
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Einfugen
• beginne mit einer Suche nach dem Elementdiese bricht an 2 Stellen ab:
• Abbruch bei leerem Restbaum → Element an diese Stelleeinfugen
• Element gefunden - je nach Wunsch• Element verwerfen, da bereits enthalten• bei Sortierung uber Keys konnte Aktualisieren des Inhalts
sinnvoll sein
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Einfugen
• beginne mit einer Suche nach dem Elementdiese bricht an 2 Stellen ab:
• Abbruch bei leerem Restbaum → Element an diese Stelleeinfugen
• Element gefunden - je nach Wunsch• Element verwerfen, da bereits enthalten• bei Sortierung uber Keys konnte Aktualisieren des Inhalts
sinnvoll sein
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Loschen
• beginne mit einer Suche nach dem Element
• Abbruch in 2 Fallen:• leerer Restbaum →
Element nicht enthalten
• Element gefunden →
Element loschen
Beim Loschen gibt es 3 Moglichkeiten, es darf kein Loch entstehen
• Element ist ein Blatt →
beim Loschen entsteht kein Loch, ok
• Element hat ein Kind →
Kind an Stelle des Elements hangen
• Element hat zwei Kinder →
Element durch ein innerstes Kindersetzen (siehe nachste Folie)
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Loschen
• beginne mit einer Suche nach dem Element
• Abbruch in 2 Fallen:• leerer Restbaum → Element nicht enthalten• Element gefunden → Element loschen
Beim Loschen gibt es 3 Moglichkeiten, es darf kein Loch entstehen
• Element ist ein Blatt →
beim Loschen entsteht kein Loch, ok
• Element hat ein Kind →
Kind an Stelle des Elements hangen
• Element hat zwei Kinder →
Element durch ein innerstes Kindersetzen (siehe nachste Folie)
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Loschen
• beginne mit einer Suche nach dem Element
• Abbruch in 2 Fallen:• leerer Restbaum → Element nicht enthalten• Element gefunden → Element loschen
Beim Loschen gibt es 3 Moglichkeiten, es darf kein Loch entstehen
• Element ist ein Blatt →
beim Loschen entsteht kein Loch, ok
• Element hat ein Kind →
Kind an Stelle des Elements hangen
• Element hat zwei Kinder →
Element durch ein innerstes Kindersetzen (siehe nachste Folie)
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Loschen
• beginne mit einer Suche nach dem Element
• Abbruch in 2 Fallen:• leerer Restbaum → Element nicht enthalten• Element gefunden → Element loschen
Beim Loschen gibt es 3 Moglichkeiten, es darf kein Loch entstehen
• Element ist ein Blatt → beim Loschen entsteht kein Loch, ok
• Element hat ein Kind → Kind an Stelle des Elements hangen
• Element hat zwei Kinder → Element durch ein innerstes Kindersetzen (siehe nachste Folie)
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Binare Suchbaume (Binary Search Tree)
Loschen
Beispiel: Loschen eines Elements mit 2 KindernDie 6 und die 9 sind die “innersten” Kinder - alle anderenUnterelemente sind sowohl von der Zahlenordnung als auch von derhorizontalen Position gesehen weiter von der 7 (Mitte) entfernt.
Quelle: http://en.wikipedia.org/wiki/File:Binary_search_tree_delete.svg
Daher bleibt die Suchbaumeigenschaft beim Ersetzen erhalten.
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
1 Besprechung Blatt 11Fragen
2 Binary SearchBinare Suche in ArraysBinare Suchbaume (Binary Search Tree)
3 SortierverfahrenAllgemeinHeapsortBubblesortInsertionsortMergesortQuicksort
4 Vorbereitung Blatt 12Hinweise
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Allgemein
• Aufwand eines Sortieralgorithmus:• average-case (durschnittl. Aufwand)• best-case (min. Aufwand)• worst-case (max. Aufwand)
• Eigenschaften eines Sortieralgorithmus:• sortiert stabil oder nicht stabil• sortiert in-place oder nicht in-place• ist nicht adaptiv (Aufwand immer gleich)
oder adaptiv (Aufwand profitiert von teilw. sortierten Daten)
• sehr gute Referenz: http://sorting-algorithms.com
Anmerkung: in Java sind Intervallgrenzen meist in der Form[inklusiv , exklusiv) angegeben!
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Allgemein
• Aufwand eines Sortieralgorithmus:• average-case (durschnittl. Aufwand)• best-case (min. Aufwand)• worst-case (max. Aufwand)
• Eigenschaften eines Sortieralgorithmus:
• sortiert stabil oder nicht stabil• sortiert in-place oder nicht in-place• ist nicht adaptiv (Aufwand immer gleich)
oder adaptiv (Aufwand profitiert von teilw. sortierten Daten)
• sehr gute Referenz: http://sorting-algorithms.com
Anmerkung: in Java sind Intervallgrenzen meist in der Form[inklusiv , exklusiv) angegeben!
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Allgemein
• Aufwand eines Sortieralgorithmus:• average-case (durschnittl. Aufwand)• best-case (min. Aufwand)• worst-case (max. Aufwand)
• Eigenschaften eines Sortieralgorithmus:• sortiert stabil oder nicht stabil
• sortiert in-place oder nicht in-place• ist nicht adaptiv (Aufwand immer gleich)
oder adaptiv (Aufwand profitiert von teilw. sortierten Daten)
• sehr gute Referenz: http://sorting-algorithms.com
Anmerkung: in Java sind Intervallgrenzen meist in der Form[inklusiv , exklusiv) angegeben!
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Allgemein
• Aufwand eines Sortieralgorithmus:• average-case (durschnittl. Aufwand)• best-case (min. Aufwand)• worst-case (max. Aufwand)
• Eigenschaften eines Sortieralgorithmus:• sortiert stabil oder nicht stabil• sortiert in-place oder nicht in-place
• ist nicht adaptiv (Aufwand immer gleich)oder adaptiv (Aufwand profitiert von teilw. sortierten Daten)
• sehr gute Referenz: http://sorting-algorithms.com
Anmerkung: in Java sind Intervallgrenzen meist in der Form[inklusiv , exklusiv) angegeben!
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Allgemein
• Aufwand eines Sortieralgorithmus:• average-case (durschnittl. Aufwand)• best-case (min. Aufwand)• worst-case (max. Aufwand)
• Eigenschaften eines Sortieralgorithmus:• sortiert stabil oder nicht stabil• sortiert in-place oder nicht in-place• ist nicht adaptiv (Aufwand immer gleich)
oder adaptiv (Aufwand profitiert von teilw. sortierten Daten)
• sehr gute Referenz: http://sorting-algorithms.com
Anmerkung: in Java sind Intervallgrenzen meist in der Form[inklusiv , exklusiv) angegeben!
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Allgemein
• Aufwand eines Sortieralgorithmus:• average-case (durschnittl. Aufwand)• best-case (min. Aufwand)• worst-case (max. Aufwand)
• Eigenschaften eines Sortieralgorithmus:• sortiert stabil oder nicht stabil• sortiert in-place oder nicht in-place• ist nicht adaptiv (Aufwand immer gleich)
oder adaptiv (Aufwand profitiert von teilw. sortierten Daten)
• sehr gute Referenz: http://sorting-algorithms.com
Anmerkung: in Java sind Intervallgrenzen meist in der Form[inklusiv , exklusiv) angegeben!
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Allgemein
• Aufwand eines Sortieralgorithmus:• average-case (durschnittl. Aufwand)• best-case (min. Aufwand)• worst-case (max. Aufwand)
• Eigenschaften eines Sortieralgorithmus:• sortiert stabil oder nicht stabil• sortiert in-place oder nicht in-place• ist nicht adaptiv (Aufwand immer gleich)
oder adaptiv (Aufwand profitiert von teilw. sortierten Daten)
• sehr gute Referenz: http://sorting-algorithms.com
Anmerkung: in Java sind Intervallgrenzen meist in der Form[inklusiv , exklusiv) angegeben!
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Heapsort
Heapsort
Algorithmus (vgl. Herausnehmen aus einem Heap, Ubung 10)
• statt das Maximum herauszunehmen, wird es an die hinterstePosition getauscht
• der Heap wird um eins kurzer und seine Struktur muss wiebeim Herausnehmen wiederhergestellt werden
• dahinter wird die sortierte Reihung ruckwarts aufgebaut
Eigenschaften
• sortiert nicht stabil
• sortiert in-place
• average-/best-/worst-case O(n log n)⇒ nicht adaptiv
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Heapsort
Heapsort
Algorithmus (vgl. Herausnehmen aus einem Heap, Ubung 10)
• statt das Maximum herauszunehmen, wird es an die hinterstePosition getauscht
• der Heap wird um eins kurzer und seine Struktur muss wiebeim Herausnehmen wiederhergestellt werden
• dahinter wird die sortierte Reihung ruckwarts aufgebaut
Eigenschaften
• sortiert nicht stabil
• sortiert in-place
• average-/best-/worst-case O(n log n)⇒ nicht adaptiv
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Heapsort
Heapsort
Algorithmus (vgl. Herausnehmen aus einem Heap, Ubung 10)
• statt das Maximum herauszunehmen, wird es an die hinterstePosition getauscht
• der Heap wird um eins kurzer und seine Struktur muss wiebeim Herausnehmen wiederhergestellt werden
• dahinter wird die sortierte Reihung ruckwarts aufgebaut
Eigenschaften
• sortiert nicht stabil
• sortiert in-place
• average-/best-/worst-case O(n log n)⇒ nicht adaptiv
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Bubblesort
Bubblesort
Algorithmus
• von vorne alle Elemente durchgehen,ist ein Element kleiner als sein Vorganger: tauschen
• wiederholen, bis kein Tausch mehr notig ist
Eigenschaften
• sortiert stabil
• sortiert in-place
• average-/worst-case O(n2)
• best-case O(n) (Eingabedaten fast sortiert)⇒ adaptiv
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Bubblesort
Bubblesort
Algorithmus
• von vorne alle Elemente durchgehen,ist ein Element kleiner als sein Vorganger: tauschen
• wiederholen, bis kein Tausch mehr notig ist
Eigenschaften
• sortiert stabil
• sortiert in-place
• average-/worst-case O(n2)
• best-case
O(n) (Eingabedaten fast sortiert)⇒ adaptiv
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Bubblesort
Bubblesort
Algorithmus
• von vorne alle Elemente durchgehen,ist ein Element kleiner als sein Vorganger: tauschen
• wiederholen, bis kein Tausch mehr notig ist
Eigenschaften
• sortiert stabil
• sortiert in-place
• average-/worst-case O(n2)
• best-case O(n) (Eingabedaten fast sortiert)⇒ adaptiv
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Insertionsort
Insertionsort
Algorithmus
• von vorne alle Elemente durchgehen
• jedes Element solange mit seinem Vorganger tauschen,bis dieser kleiner ist
Eigenschaften
• sortiert stabil
• sortiert in-place
• average-/worst-case O(n2)
• best-case O(n) (Eingabedaten fast sortiert)⇒ adaptiv
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Insertionsort
Insertionsort
Algorithmus
• von vorne alle Elemente durchgehen
• jedes Element solange mit seinem Vorganger tauschen,bis dieser kleiner ist
Eigenschaften
• sortiert stabil
• sortiert in-place
• average-/worst-case O(n2)
• best-case O(n) (Eingabedaten fast sortiert)⇒ adaptiv
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Mergesort
Mergesort (Sortieren durch Mischen )
Algorithmus
• Liste rekursiv halbieren
• Teile ruckwarts mit Reißverschlussverfahren zusammenfugen
Eigenschaften
• sortiert stabil
• sortiert normalerweise nicht in-place
• average-/best-/worst-case O(n log n)⇒ nicht adaptiv
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Mergesort
Mergesort (Sortieren durch Mischen )
Algorithmus
• Liste rekursiv halbieren
• Teile ruckwarts mit Reißverschlussverfahren zusammenfugen
Eigenschaften
• sortiert stabil
• sortiert normalerweise nicht in-place
• average-/best-/worst-case O(n log n)⇒ nicht adaptiv
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Quicksort
QuicksortAlgorithmus
• Pivotelement auswahlen
• Liste aufteilen: (Restlisten noch unsortiert)
kleinere Elemente < Pivotelement < großere Elemente
• wiederholen bis Restlisten leer
Eigenschaften
• sortiert nicht stabil
• sortiert normalerweise nicht in-place
• average-/best-case O(n log n)
• worst-case O(n2) (Pivotelement immer schlecht gewahlt)⇒ adaptiv
• durchschnittlich schnellster Sortieralgorithmus
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Quicksort
QuicksortAlgorithmus
• Pivotelement auswahlen
• Liste aufteilen: (Restlisten noch unsortiert)
kleinere Elemente < Pivotelement < großere Elemente
• wiederholen bis Restlisten leer
Eigenschaften
• sortiert nicht stabil
• sortiert normalerweise nicht in-place
• average-/best-case O(n log n)
• worst-case O(n2) (Pivotelement immer schlecht gewahlt)⇒ adaptiv
• durchschnittlich schnellster Sortieralgorithmus
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
1 Besprechung Blatt 11Fragen
2 Binary SearchBinare Suche in ArraysBinare Suchbaume (Binary Search Tree)
3 SortierverfahrenAllgemeinHeapsortBubblesortInsertionsortMergesortQuicksort
4 Vorbereitung Blatt 12Hinweise
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Hinweise
Wie teste ich meine Implementierung?
Sortierverfahren lassen sich sehr einfach testen, indem man sie mitdenen aus der API vergleicht.
• beliebigen Array erzeugen
• echte Kopie des Arrays erzeugen ( Arrays.copyOf() )
• Original mit eigenem Sortierverfahren testen
• es gibt eine Uberladung von java.util.Arrays.sort(), die genaudie gleichen Parameter annimmt.→ mit dieser die Kopie sortieren
• beide Arrays mit Arrays.toString() ausgeben und vergleichen
Erzeugt man keine echte Kopie, so wird 2x der selbe Array sortiertund das Ergebnis zeigt nur den letzten Algorithmus!
Details zu den Arrays Methoden in der API.
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Hinweise
12.?
Zum Rumspielen mit binaren Suchbaumen den Link auf demUbungsblatt oder folgendes Java-Applet verwenden:http://www.site.uottawa.ca/~stan/csi2514/applets/avl/
BT.html (Haken bei AVL rausnehmen!)
Alles weitere bis Freitag Topf-Secret!
Algorithmen und Datenstrukturen 12 Stefan Ploner
Besprechung Blatt 11 Binary Search Sortierverfahren Vorbereitung Blatt 12
Hinweise
Noch Fragen?
Danke fur die Aufmerksamkeit!
Algorithmen und Datenstrukturen 12 Stefan Ploner