• Keine Ergebnisse gefunden

Algorithmen und Datenstrukturen A13. Sortieren: ¨Uberblick & Ausblick Marcel L¨uthi and Gabriele R¨oger

N/A
N/A
Protected

Academic year: 2022

Aktie "Algorithmen und Datenstrukturen A13. Sortieren: ¨Uberblick & Ausblick Marcel L¨uthi and Gabriele R¨oger"

Copied!
19
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

A13. Sortieren: ¨Uberblick & Ausblick

Marcel L¨uthi and Gabriele R¨oger

Universit¨at Basel

25. M¨arz 2021

(2)

Sortierverfahren

Sortieren

Vergleichsbasierte Verfahren

Nicht vergleichsbasierte

Verfahren

Uberblick und¨ Ausblick

(3)

Uberblick ¨

(4)

Vergleichsbasierte Verfahren: ¨ Ubersicht

Algorithmus LaufzeitO(·) SpeicherbedarfO(·) stabil best/avg./worst best/avg./worst

Selectionsort n2 1 nein

Insertionsort n/n2/n2 1 ja

Mergesort nlogn n ja

Quicksort nlogn/nlogn/n2 logn/logn/n nein

Heapsort nlogn 1 nein

Sehr sch¨one Visualisierung der Verfahren unter

https://www.toptal.com/developers/sorting-algorithms/

(5)

Vergleichsbasierte Verfahren: ¨ Ubersicht

Algorithmus LaufzeitO(·) SpeicherbedarfO(·) stabil best/avg./worst best/avg./worst

Selectionsort n2 1 nein

Insertionsort n/n2/n2 1 ja

Mergesort nlogn n ja

Quicksort nlogn/nlogn/n2 logn/logn/n nein

Heapsort nlogn 1 nein

Sehr sch¨oneVisualisierung der Verfahrenunter

https://www.toptal.com/developers/sorting-algorithms/

(6)

Vergleichsbasierte Verfahren: Bemerkungen

Insertionsort ist aufkleinen Sequenzensehrschnellund wird daher zum Beispiel zur Verbesserung von Mergesort und Quicksort f¨ur kurze Aufrufe eingesetzt.

Quicksort hat eine sehr kurze (= schnelle) innere Schleife. Mit Randomisierung tritt schlechtester Fall so gut wie nie auf.

Mergesort ist daf¨ur stabil. Zudem ist der Mergeschritt auch f¨ur externes Sortieren relevant

Wird z.B. gerne bei Datenbankanwendungen eingesetzt.

Heapsort ist in der Praxis etwas langsamer als Mergesort, als in-place-Verfahren aber dennoch interessant

z.B. f¨ur eingebettete Systeme.

Gleiche asymptotische Laufzeit bedeutet nicht, dass Verfahren auch gleich lange brauchen (verschiedene Konstanten inO(·)).

Heapsort braucht doppelt so viele Vergleiche wie Mergesort.

(7)

Vergleichsbasierte Verfahren: Bemerkungen

Insertionsort ist aufkleinen Sequenzensehrschnellund wird daher zum Beispiel zur Verbesserung von Mergesort und Quicksort f¨ur kurze Aufrufe eingesetzt.

Quicksort hat eine sehr kurze (= schnelle) innere Schleife. Mit Randomisierung tritt schlechtester Fall so gut wie nie auf.

Mergesort ist daf¨ur stabil. Zudem ist der Mergeschritt auch f¨ur externes Sortieren relevant

Wird z.B. gerne bei Datenbankanwendungen eingesetzt.

Heapsort ist in der Praxis etwas langsamer als Mergesort, als in-place-Verfahren aber dennoch interessant

z.B. f¨ur eingebettete Systeme.

Gleiche asymptotische Laufzeit bedeutet nicht, dass Verfahren auch gleich lange brauchen (verschiedene Konstanten inO(·)).

Heapsort braucht doppelt so viele Vergleiche wie Mergesort.

(8)

Vergleichsbasierte Verfahren: Bemerkungen

Insertionsort ist aufkleinen Sequenzensehrschnellund wird daher zum Beispiel zur Verbesserung von Mergesort und Quicksort f¨ur kurze Aufrufe eingesetzt.

Quicksort hat eine sehr kurze (= schnelle) innere Schleife. Mit Randomisierung tritt schlechtester Fall so gut wie nie auf.

Mergesort ist daf¨urstabil. Zudem ist der Mergeschritt auch f¨ur externes Sortieren relevant

Wird z.B. gerne bei Datenbankanwendungen eingesetzt.

Heapsort ist in der Praxis etwas langsamer als Mergesort, als in-place-Verfahren aber dennoch interessant

z.B. f¨ur eingebettete Systeme.

Gleiche asymptotische Laufzeit bedeutet nicht, dass Verfahren auch gleich lange brauchen (verschiedene Konstanten inO(·)).

Heapsort braucht doppelt so viele Vergleiche wie Mergesort.

(9)

Vergleichsbasierte Verfahren: Bemerkungen

Insertionsort ist aufkleinen Sequenzensehrschnellund wird daher zum Beispiel zur Verbesserung von Mergesort und Quicksort f¨ur kurze Aufrufe eingesetzt.

Quicksort hat eine sehr kurze (= schnelle) innere Schleife. Mit Randomisierung tritt schlechtester Fall so gut wie nie auf.

Mergesort ist daf¨urstabil. Zudem ist der Mergeschritt auch f¨ur externes Sortieren relevant

Wird z.B. gerne bei Datenbankanwendungen eingesetzt.

Heapsortist in der Praxis etwas langsamer als Mergesort, als in-place-Verfahren aber dennoch interessant

z.B. f¨ur eingebettete Systeme.

Gleiche asymptotische Laufzeit bedeutet nicht, dass Verfahren auch gleich lange brauchen (verschiedene Konstanten inO(·)).

Heapsort braucht doppelt so viele Vergleiche wie Mergesort.

(10)

Vergleichsbasierte Verfahren: Bemerkungen

Insertionsort ist aufkleinen Sequenzensehrschnellund wird daher zum Beispiel zur Verbesserung von Mergesort und Quicksort f¨ur kurze Aufrufe eingesetzt.

Quicksort hat eine sehr kurze (= schnelle) innere Schleife. Mit Randomisierung tritt schlechtester Fall so gut wie nie auf.

Mergesort ist daf¨urstabil. Zudem ist der Mergeschritt auch f¨ur externes Sortieren relevant

Wird z.B. gerne bei Datenbankanwendungen eingesetzt.

Heapsortist in der Praxis etwas langsamer als Mergesort, als in-place-Verfahren aber dennoch interessant

z.B. f¨ur eingebettete Systeme.

Gleiche asymptotische Laufzeit bedeutet nicht, dass Verfahren auch gleich lange brauchen (verschiedene Konstanten inO(·)).

Heapsort braucht doppelt so viele Vergleiche wie Mergesort.

(11)

Ausblick

(12)

Vorsortierte Daten

Oftmals sindTeilsequenzen der Eingabe bereitsvorsortiert.

Insertionsort profitiert davon direkt.

Von manchen Verfahren gibt es Varianten, die Vorsortierung ausnutzen

z.B. nat¨urliches 2-Wege-Mergesort.

(13)

Viele gleiche Schl¨ ussel

Tritt in praktischen Anwendungen h¨aufig auf

z.B. Sortieren von Studierendendaten nach Geschlecht Von manchen Algorithmen gibt es spezialisierte Varianten Zum Beispiel 3-Wege-Partitionierung in Quicksort

=P

<P >P

(14)

Sortieren komplexer Objekte

Meist will man nicht nur Zahlen, sondernkomplexe Objekte sortieren.

Hier w¨are es sehr teuer, bei jeder Vertauschung die ganzen Objekte zu kopieren.

Stattdessen: Sortiere Elemente, die nur aus Schl¨ussel und Zeiger/Referenz auf das tats¨achliche Objekt bestehen.

(15)

Weniger korrekte Verfahren

vollst¨andiger Comic unter https://xkcd.com/1185/

(CC BY-NC 2.5)

(16)

Andere Probleme durch Sortieren l¨ osen

k-kleinstes Element

zum Beispiel Finden des Medians (k =bn/2c) Verwende Quicksort, aber mache rekursiven Aufruf nur f¨ur den relevanten Bereich (→ Quickselect).

Duplikate

Wie viele verschiedene Schl¨ussel gibt es? Welcher Wert ist am h¨aufigsten? Gibt es doppelte Schl¨ussel?

Kann man direkt mit quadratischen Algorithmen beantworten.

Oder – schlauer – erst sortieren und dann mit einem Durchlauf l¨osen.

(17)

Andere Probleme durch Sortieren l¨ osen

k-kleinstes Element

zum Beispiel Finden des Medians (k =bn/2c) Verwende Quicksort, aber mache rekursiven Aufruf nur f¨ur den relevanten Bereich (→ Quickselect).

Duplikate

Wie viele verschiedene Schl¨ussel gibt es? Welcher Wert ist am h¨aufigsten? Gibt es doppelte Schl¨ussel?

Kann man direkt mit quadratischen Algorithmen beantworten.

Oder – schlauer – erst sortieren und dann mit einem Durchlauf l¨osen.

(18)

Quiz

(19)

Quiz

kahoot.it

Referenzen

ÄHNLICHE DOKUMENTE

Invariante 2: Zum Ende jedes Durchlaufs der ¨ ausseren Schleife ist keines der Elemente an den Positionen ≤ i gr¨ osser als ein Element an einer Position &gt; i.. Korrektheit

I Invariante 2: Zum Ende jedes Durchlaufs der ¨ ausseren Schleife ist keines der Elemente an den Positionen ≤ i gr¨ osser als ein Element an einer Position &gt; i. I Korrektheit

Mergesort: Ruft sort aux f¨ ur gesamten Bereich auf, Mergesort: daher ist am Ende die gesamte Eingabe sortiert... Wir wissen bereits, dass der Merge-Schritt korrekt ist, also ist

I Insgesamt f¨ ur Mergesort leicht ¨ uberlinear (analog zu Schl¨

Beispiel: pos0 7→ pos2, pos1 7→ pos1, pos2 7→ pos0 I Da alle m¨ oglichen Eingaben der Gr¨ osse n korrekt gel¨ osst. werden m¨ ussen, muss der Algorithmus

Quicksort Heapsort Nicht vergleichsbasierte Verfahren

Elemente werden in Array gespeichert, wobei Position durch Schl¨ ussel bestimmt ist.. Wichtigstes Werkzeug: Hashfunktion Berechnet Index aus

In einer auf Verkettung basierenden Hashtabelle mit M Listen und N Schl¨ usseln ist die Anzahl der Vergleiche (Gleichheitstests) f¨ ur Einf¨ ugungen und erfolglose Suchen ∼