Algorithmen und Datenstrukturen
B1. Einf¨ uhrung in Datenstrukturen
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 / 19
Algorithmen und Datenstrukturen
7. M¨ arz 2019 — B1. Einf¨ uhrung in Datenstrukturen
B1.1 ¨ Ubersicht
B1.2 Datenstrukturen B1.3 Sortieren mit Heaps
M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 2 / 19
B1. Einf¨uhrung in Datenstrukturen Ubersicht¨
B1.1 ¨ Ubersicht
B1. Einf¨uhrung in Datenstrukturen Ubersicht¨
Ubersicht ¨
A&D
Sortieren Komplexit¨ ats-
analyse Fundamentale Datenstrukturen
Suchen Graphen
Strings Weiterf¨ uhrende
Themen
B1. Einf¨uhrung in Datenstrukturen Ubersicht¨
Ausblick : Fundamentale Datenstrukturen
I Datenabstraktion (Abstrakte Datentypen)
I Multimengen, Stapel, (Priorit¨ ats-) Warteschlangen I Datenstrukturen
I Arrays, Verkettete Listen, B¨ aume, Heaps
H¨ ohepunkt: Heapsort
Elegantes Zusammenspiel Algorithmus und Datenstruktur.
I Clevere Datenstruktur - Simpler Algorithmus I Garantiertes Laufzeitverhalten O(n log n)
M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 5 / 19
B1. Einf¨uhrung in Datenstrukturen Datenstrukturen
B1.2 Datenstrukturen
M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 6 / 19
B1. Einf¨uhrung in Datenstrukturen Datenstrukturen
Datenstrukturen
I Programmieren ist mehr als Algorithmen schreiben
I Datenorganisation ist zentral
I Elegante Datenstrukturen f¨ uhren zu elegantem Code I Programmierer
I braucht Katalog von Datenstrukturen I muss Eigenschaften
kennen
M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 7 / 19
B1. Einf¨uhrung in Datenstrukturen Datenstrukturen
Ubersicht ¨
M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 8 / 19
B1. Einf¨uhrung in Datenstrukturen Datenstrukturen
Datenstrukturen
Bad programmers worry about the code. Good programmers worry about data structures and their relationships.
Linus Torvalds
M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 9 / 19
B1. Einf¨uhrung in Datenstrukturen Datenstrukturen
Datenstrukturen
Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won’t usually
need your flowcharts; they’ll be obvious.
Fred Brooks
M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 10 / 19
B1. Einf¨uhrung in Datenstrukturen Sortieren mit Heaps
B1.3 Sortieren mit Heaps
B1. Einf¨uhrung in Datenstrukturen Sortieren mit Heaps
Beispiel: Sortieren mit Heaps (Ausblick)
Datenstruktur: Heap
Ein (bin¨ arer) min-Heap ist ein vollst¨ andiger bin¨ arer Baum, bei dem
gilt, dass der Wert in jedem Knoten kleiner gleich dem Wert seiner
beiden Kindern (sofern vorhanden) ist.
B1. Einf¨uhrung in Datenstrukturen Sortieren mit Heaps
Aufbauen eines Heaps (Wandtafel)
Elemente: 7, 13, 5, 8, 1, 2
M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 13 / 19
B1. Einf¨uhrung in Datenstrukturen Sortieren mit Heaps
Entfernen des kleinsten Elements (Wandtafel)
M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 14 / 19
B1. Einf¨uhrung in Datenstrukturen Sortieren mit Heaps
Jupyter notebook
Schreiben Sie einen Sortieralgorithmus
Jupyter Notebook: heapq.ipynb
M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 15 / 19
B1. Einf¨uhrung in Datenstrukturen Sortieren mit Heaps
Beispiel: Sortieren mit Heaps (Ausblick)
Idee des Algorithmus:
I Baue Heap aus unsortierter Liste I Solange Elemente im Heap sind
I Entferne kleinstes Element (Wurzel) I Schreibe Element in (neue) Liste I Stelle Heapbedingung wieder her
I Neue Liste enth¨ alt Elemente in sortierter Reihenfolge Heapsort: Gleiche Idee, aber inplace.
M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 16 / 19
B1. Einf¨uhrung in Datenstrukturen Sortieren mit Heaps
Beispiel: Sortieren mit Heaps (Ausblick)
Offene Fragen:
I Wie schnell k¨ onnen wir Heap aus n unsortierten Elementen aufbauen?
I Antwort: Naiv: In O(n log 2 n) Operationen. Trickreich: In O(n) I Wie schnell k¨ onnen wir Heapbedingung nach Entfernen
wiederherstellen?
I Antwort: In O(log 2 n) Operationen
I Wie gross ist die gesamte Laufzeitkomplexit¨ at I Antwort: In O(n log 2 n) Operationen
Komplexit¨ at verschoben von Algorithmus nach Datenstruktur
M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 17 / 19
B1. Einf¨uhrung in Datenstrukturen Sortieren mit Heaps
Zusammenfassung
I Algorithmen und Datenstrukturen arbeiten zusammen I (Teil der) Komplexit¨ at kann verschoben werden I Datenstrukturen k¨ onnen meist visualisiert/graphisch
verstanden werden
I Oft gilt: Gute Datenstrukturen ⇒ Einfach(ere) Programme Details von Heapsort folgen ...
M. L¨uthi, G. R¨oger (Universit¨at Basel) Algorithmen und Datenstrukturen 7. M¨arz 2019 18 / 19
B1. Einf¨uhrung in Datenstrukturen Sortieren mit Heaps
Sch¨ one Fasnachtsferien
Quelle: Basler-Fasnacht.info