• Keine Ergebnisse gefunden

A8.1¨Uberblick A8.1¨UberblickA8.2AusblickA8.3Quiz AlgorithmenundDatenstrukturen AlgorithmenundDatenstrukturen Sortierverfahren

N/A
N/A
Protected

Academic year: 2022

Aktie "A8.1¨Uberblick A8.1¨UberblickA8.2AusblickA8.3Quiz AlgorithmenundDatenstrukturen AlgorithmenundDatenstrukturen Sortierverfahren"

Copied!
4
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Algorithmen und Datenstrukturen

A8. Sortieren IV

Marcel L¨uthi and Gabriele R¨oger

Universit¨at Basel

7. M¨arz 2019

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 1 / 15

Algorithmen und Datenstrukturen

7. M¨arz 2019 — A8. Sortieren IV

A8.1 ¨ Uberblick A8.2 Ausblick A8.3 Quiz

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 2 / 15

Sortierverfahren

Sortieren

Vergleichsbasierte Verfahren

Nicht vergleichsbasierte

Verfahren

Uberblick und¨ Ausblick

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 3 / 15

A8. Sortieren IV Uberblick¨

A8.1 ¨ Uberblick

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 4 / 15

(2)

A8. Sortieren IV Uberblick¨

Vergleichsbasierte Verfahren: ¨ Ubersicht

Algorithmus Laufzeit O(·) 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/

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 5 / 15

A8. Sortieren IV Uberblick¨

Vergleichsbasierte Verfahren: Bemerkungen

I Insertionsort ist auf kleinen Sequenzensehr schnell und wird daher zum Beispiel zur Verbesserung von Mergesort und Quicksort f¨ur kurze Aufrufe eingesetzt.

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

I Mergesort ist daf¨urstabil. Zudem ist der Mergeschritt auch f¨ur externes Sortieren relevant (dazu gleich noch mehr).

Wird z.B. gerne bei Datenbankanwendungen eingesetzt.

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

z.B. f¨ur eingebettete Systeme.

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

Heapsort braucht doppelt so viele Vergleiche wie Mergesort.

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 6 / 15

A8. Sortieren IV Ausblick

A8.2 Ausblick

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 7 / 15

A8. Sortieren IV Ausblick

Vorsortierte Daten

I Oftmals sindTeilsequenzen der Eingabe bereitsvorsortiert.

I Insertionsort profitiert davon direkt.

I Von manchen Verfahren gibt es Varianten, die Vorsortierung ausnutzen

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

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 8 / 15

(3)

A8. Sortieren IV Ausblick

Viele gleiche Schl¨ ussel

I Tritt in praktischen Anwendungen h¨aufig auf

z.B. Sortieren von Studierendendaten nach Geschlecht

I Von manchen Algorithmen gibt es spezialisierte Varianten

I Zum Beispiel 3-Wege-Partitionierung in Quicksort

=P

<P >P

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 9 / 15

A8. Sortieren IV Ausblick

Sortieren komplexer Objekte

I Meist will man nicht nur Zahlen, sondern komplexe Objektesortieren.

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

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

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 10 / 15

A8. Sortieren IV Ausblick

Externes Sortieren

I Sehr grosse Datens¨atzepassen nicht in den internen Speicher.

I Annahme:interner Speicher hatGr¨ossem

I Lese jeweils Bereich der Gr¨ossemein, sortiere ihn und schreibe ihn zur¨uck auf den externen Speicher.

I Dann sukzessives Mergen ¨ahnlich zu Mergesort. Konzeptuell:

I lese jeweils Bereich der Gr¨ossem/3 der beiden vorsortierten Bereiche ein

I es bleibenm/3 f¨ur Ausgabe

I falls ein Eingabebereich ersch¨opft istnachladen

I falls Ausgabebereich vollrausschreiben

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 11 / 15

A8. Sortieren IV Ausblick

Weniger korrekte Verfahren

vollst¨andiger Comic unterhttps://xkcd.com/1185/

(CC BY-NC 2.5)

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 12 / 15

(4)

A8. Sortieren IV Ausblick

Andere Probleme durch Sortieren l¨ osen

k-kleinstes Element

I zum Beispiel Finden des Medians (k =bn/2c)

I Verwende Quicksort, aber mache rekursiven Aufruf nur f¨ur den relevanten Bereich.

Duplikate

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

I Kann man direkt mit quadratischen Algorithmen beantworten.

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

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 13 / 15

A8. Sortieren IV Quiz

A8.3 Quiz

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 14 / 15

A8. Sortieren IV Quiz

Quiz

kahoot.it

M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 15 / 15

Referenzen

ÄHNLICHE DOKUMENTE

I Insertionsort betrachtet die Elemente von vorne nach hinten und sortiert sie in den bereits sortierten Bereich am.

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

A5.1 Laufzeitanalyse Allgemein A5.2 Beispiel: Selectionsort A5.3 Zusammenfassung.. R¨ oger (Universit¨ at Basel) Algorithmen und

I In der Analyse von Mergesort werden wir eine Logarithmusfunktion verwendet. I Dies ist bei der Analyse von Laufzeiten oft

I Beispiel: GTA online hatte viele Jahre eine Ladezeit von mehreren Minuten. I mehrere Minuten zum Parsen von 10

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

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 ∼ N

Dijkstras Algorithmus sehr ¨ ahnlich zu Eager Prim-Algorithmus f¨ ur minimale Spannb¨ aume?. I Beide bauen sukzessive einen