Algorithmen und Datenstrukturen

Ähnliche Dokumente
Algorithmen und Datenstrukturen 12

Übung: Algorithmen und Datenstrukturen SS 2007

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.

Algorithmen und Datenstrukturen

Tutoraufgabe 1 (Sortieralgorithmus):

Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]

JAVA - Suchen - Sortieren

Datenstrukturen und Algorithmen

Algorithmen und Datenstrukturen II

7. Übung zu Algorithmen I 1. Juni 2016

Algorithms & Data Structures 2

7. Sortieren Lernziele. 7. Sortieren

4. Sortieren 4.1 Vorbemerkungen

Algorithmen und Datenstrukturen

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2

Abschnitt: Algorithmendesign und Laufzeitanalyse

Übersicht. Einfache Verfahren MergeSort Untere Schranke QuickSort Selektieren Schnelleres Sortieren Externes Sortieren. 6 Sortieren.

8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften

Heapsort, Quicksort, Mergesort. 8. Sortieren II

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

Programmieren I. Kapitel 7. Sortieren und Suchen

Inhaltsverzeichnis. Teil 1 Grundlagen 21. Teil 2 Datenstrukturen 85

2 Sortieren durch Vergleichen Eingabefolge a 1, a 2,..., a n 2, 1, 3 Sortieralg. Für festes n ist ein vergleichsbasierter Sortieralg. charakterisiert

Übung Algorithmen und Datenstrukturen

Grundlagen der Programmierung 2. Sortierverfahren

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp

Datenstrukturen & Algorithmen

Übung Algorithmen und Datenstrukturen

Sortieren und Suchen. Jens Wächtler Hallo Welt! -Seminar LS 2

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Inhaltsverzeichnis. Teil 1 Grundlagen 23

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.

Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Abschnitt 19: Sortierverfahren

Pro Informatik 2009: Objektorientierte Programmierung Tag 17. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Sortierverfahren für Felder (Listen)

Informatik I (D-ITET)

Datenstrukturen und Algorithmen

Übungsklausur Algorithmen I

Quicksort ist ein Divide-and-Conquer-Verfahren.

Robert Sedgewick. Algorithmen in Java. Teil 1-4 Grundlagen Datenstrukturen Sortieren Suchen. Java-Beratung durch Michael Schidlowsky

Willkommen zur Vorlesung. Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min

Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4

Robert Sedgewick. Algorithmen in Java. »il 1-4 Grundlagen Datenstrykturen Sortleren Suchen. java-beratung durch Michael Schidlowsky

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

Suchen und Sortieren

Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!

Kapitel 6 Elementare Sortieralgorithmen

Übungsblatt 1. f(n) = f(n) = O(g(n)) g(n) = O(f(n)) Zeigen oder widerlegen Sie: 3 n = Θ(2 n ) Aufgabe 1.2 Gegeben sei die folgende Funktion:

Übungsklausur Algorithmen I

Algorithmen und Datenstrukturen

Prof. Dr. Margarita Esponda

Übung Datenstrukturen. Sortieren

QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren

Einführung in die Programmierung

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Spezielle Sortierverfahren Autor: Sven Schuierer

Algorithmik Kap. 2: Laufzeit von Algorithmen

Kapitel 1 Einleitung. Definition: Algorithmus nach M. Broy: aus: Informatik: Eine grundlegende Einführung, Band 1, Springer-Verlag, Berlin

Datenstrukturen und Algorithmen

4.4.2 Virtuelles Hashing Erweiterbares Hashing Das Gridfile Implementation von Hashverfahren in Java

Aufgabe (Schreibtischtest, Algorithmenanalyse)

Übung Algorithmen I

Pro Informatik 2009: Objektorientierte Programmierung Tag 18. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (25 Sortieren vorsortierter Daten)

Algorithmen und Datenstrukturen 1-3. Seminar -

Informatik II Prüfungsvorbereitungskurs

Sortieren II / HeapSort Heaps

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

10. Sortieren III. Untere Schranken für das vergleichsbasierte Sortieren, Radix- und Bucketsort

Algorithmen und Datenstrukturen Tafelübung 14. Jens Wetzl 8. Februar 2012

NAME, VORNAME: Studiennummer: Matrikel:

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A)

2.3.1 Einleitung Einfache Sortierverfahren Höhere Sortierverfahren Komplexität von Sortierverfahren Spezielle Sortierverfahren

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer

Kapitel 5: Paradigmen des Algorithmenentwurfs. Gliederung

Suchen und Sortieren (Die klassischen Algorithmen)

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen

1.3 Erinnerung: Mergesort

Transkript:

Algorithmen und Datenstrukturen 11. Übung Verkettete Listen, Sortieren Insertionsort, Mergesort, Radixsort, Quicksort Clemens Lang Übungen zu AuD 19. Januar 2010 Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 1 / 10

Organisatorisches Endspurt: Noch 3 Übungsblätter Evaluation: Hat jemand noch keine TAN? Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 2 / 10

Verkettete Liste (engl. Linked List) (11.1) Funktion Datenstruktur zum Verwalten (komplexer) Daten Vorteile flexible Größe einfache Struktur und Verwendung (z.b. Einfügen und Löschen in der Mitte) Nachteil Kein wahlfreier Zugriff (durchschnittlicher Zugriff dauert O(n)) Idee Einträge der Liste haben jeweils Referenz auf nächstes Element Schematische Darstellung Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 3 / 10

Verkettete Liste (engl. Linked List) (11.1) Funktion Datenstruktur zum Verwalten (komplexer) Daten Vorteile flexible Größe einfache Struktur und Verwendung (z.b. Einfügen und Löschen in der Mitte) Nachteil Kein wahlfreier Zugriff (durchschnittlicher Zugriff dauert O(n)) Idee Einträge der Liste haben jeweils Referenz auf nächstes Element Schematische Darstellung Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 3 / 10

Linked List Operationen (11.1) mögliche Operationen Einfügen am Anfang in der Mitte am Ende Löschen vgl. Einfügen Suchen Durchlaufen der Liste Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 4 / 10

Sortieren Laufzeit (überlicherweise angegeben im best-, worst- und average case) Platzbedarf in-place (auch: in situ) out-of-place (Angabe in O-Notation) Stabilität: gleichwertige Elemente sind nach dem Sortieren noch in der gleichen Reihenfolge Insertionsort Radixsort Mergesort Quicksort Bubblesort Heapsort Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 5 / 10

Insertionsort (dt. Sortieren durch Einfügen) (11.1) Verfahren 1 Suche richtige Stelle zum Einfügen 2 Füge Element an der Stelle ein Verschiebe dabei nachfolgende Elemente nach hinten Beispiel: 3 10 5 1 19 / : best O(n) average O(n 2 ) worst O(n 2 ) Stabilität: möglich Platzbedarf: in-place (möglich) Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 6 / 10

Insertionsort (dt. Sortieren durch Einfügen) (11.1) Verfahren 1 Suche richtige Stelle zum Einfügen 2 Füge Element an der Stelle ein Verschiebe dabei nachfolgende Elemente nach hinten Beispiel: 3 10 5 1 19 / : best O(n) average O(n 2 ) worst O(n 2 ) Stabilität: möglich Platzbedarf: in-place (möglich) Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 6 / 10

Insertionsort (dt. Sortieren durch Einfügen) (11.1) Verfahren 1 Suche richtige Stelle zum Einfügen 2 Füge Element an der Stelle ein Verschiebe dabei nachfolgende Elemente nach hinten Beispiel: 3 10 5 1 19 / : best O(n) average O(n 2 ) worst O(n 2 ) Stabilität: möglich Platzbedarf: in-place (möglich) Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 6 / 10

Radixsort (11.2, 11.3) Verfahren 1 Betrachte eine Stelle/ein Zeichen, beginne am rechten Zeichen 2 Sortiere alle Elemente nach dem Zeichen an der betrachteten Stelle in Fächer (engl. Buckets) 3 Konkateniere Inhalt der Buckets in ihrer sortierten Reihenfolge 4 Setze Verfahren mit der nächsten Stelle fort Beispiel Postleitzahlen: 96173 91052 90573 81539 91058 10008 Mit k Stellen und n Elementen: O(k n) Für konstantes k sehr schnell! Stabil quasi per Definition Platzbedarf O(k) nicht vergleichsbasiert Nachteil: Alphabet muss bekannt sein Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 7 / 10

Radixsort (11.2, 11.3) Verfahren 1 Betrachte eine Stelle/ein Zeichen, beginne am rechten Zeichen 2 Sortiere alle Elemente nach dem Zeichen an der betrachteten Stelle in Fächer (engl. Buckets) 3 Konkateniere Inhalt der Buckets in ihrer sortierten Reihenfolge 4 Setze Verfahren mit der nächsten Stelle fort Beispiel Postleitzahlen: 96173 91052 90573 81539 91058 10008 Mit k Stellen und n Elementen: O(k n) Für konstantes k sehr schnell! Stabil quasi per Definition Platzbedarf O(k) nicht vergleichsbasiert Nachteil: Alphabet muss bekannt sein Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 7 / 10

Radixsort (11.2, 11.3) Verfahren 1 Betrachte eine Stelle/ein Zeichen, beginne am rechten Zeichen 2 Sortiere alle Elemente nach dem Zeichen an der betrachteten Stelle in Fächer (engl. Buckets) 3 Konkateniere Inhalt der Buckets in ihrer sortierten Reihenfolge 4 Setze Verfahren mit der nächsten Stelle fort Beispiel Postleitzahlen: 96173 91052 90573 81539 91058 10008 Mit k Stellen und n Elementen: O(k n) Für konstantes k sehr schnell! Stabil quasi per Definition Platzbedarf O(k) nicht vergleichsbasiert Nachteil: Alphabet muss bekannt sein Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 7 / 10

Radixsort (11.2, 11.3) Verfahren 1 Betrachte eine Stelle/ein Zeichen, beginne am rechten Zeichen 2 Sortiere alle Elemente nach dem Zeichen an der betrachteten Stelle in Fächer (engl. Buckets) 3 Konkateniere Inhalt der Buckets in ihrer sortierten Reihenfolge 4 Setze Verfahren mit der nächsten Stelle fort Beispiel Postleitzahlen: 96173 91052 90573 81539 91058 10008 Mit k Stellen und n Elementen: O(k n) Für konstantes k sehr schnell! Stabil quasi per Definition Platzbedarf O(k) nicht vergleichsbasiert Nachteil: Alphabet muss bekannt sein Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 7 / 10

Mergesort (dt. Sortieren durch Mischen) (11.4, 11.5) Verfahren: Divide and Conquer 1 Teile Menge in gleich große Teilmengen 2 Sortiere Teilmengen rekursiv 3 Verschmelze Teilmengen Kein wahlfreier Zugriff nötig Anwendung auf verketteten Listen Beispiel: 89 5 40 84 20 95 7 14 85 O(n log n) Stabil: möglich Platzbedarf: auf verketteten Listen in-place Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 8 / 10

Mergesort (dt. Sortieren durch Mischen) (11.4, 11.5) Verfahren: Divide and Conquer 1 Teile Menge in gleich große Teilmengen 2 Sortiere Teilmengen rekursiv 3 Verschmelze Teilmengen Kein wahlfreier Zugriff nötig Anwendung auf verketteten Listen Beispiel: 89 5 40 84 20 95 7 14 85 O(n log n) Stabil: möglich Platzbedarf: auf verketteten Listen in-place Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 8 / 10

Mergesort (dt. Sortieren durch Mischen) (11.4, 11.5) Verfahren: Divide and Conquer 1 Teile Menge in gleich große Teilmengen 2 Sortiere Teilmengen rekursiv 3 Verschmelze Teilmengen Kein wahlfreier Zugriff nötig Anwendung auf verketteten Listen Beispiel: 89 5 40 84 20 95 7 14 85 O(n log n) Stabil: möglich Platzbedarf: auf verketteten Listen in-place Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 8 / 10

Mergesort (dt. Sortieren durch Mischen) (11.4, 11.5) Verfahren: Divide and Conquer 1 Teile Menge in gleich große Teilmengen 2 Sortiere Teilmengen rekursiv 3 Verschmelze Teilmengen Kein wahlfreier Zugriff nötig Anwendung auf verketteten Listen Beispiel: 89 5 40 84 20 95 7 14 85 O(n log n) Stabil: möglich Platzbedarf: auf verketteten Listen in-place Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 8 / 10

Quicksort (12.3) Verfahren 1 Wähle Pivotelement p 2 Trenne Elemente < p von Elementen > p 3 Tausche Pivot zwischen die beiden Teillisten 4 Verfahre Rekursiv mit den Teillisten Beispiel: 9 2 8 4 3 12 23 1 best O(n log n) average O(n log n) worst O(n 2 ) a nicht stabil in-place a ironischerweise bei vorsortierter Eingabe ;) Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 9 / 10

Quicksort (12.3) Verfahren 1 Wähle Pivotelement p 2 Trenne Elemente < p von Elementen > p 3 Tausche Pivot zwischen die beiden Teillisten 4 Verfahre Rekursiv mit den Teillisten Beispiel: 9 2 8 4 3 12 23 1 best O(n log n) average O(n log n) worst O(n 2 ) a nicht stabil in-place a ironischerweise bei vorsortierter Eingabe ;) Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 9 / 10

Quicksort (12.3) Verfahren 1 Wähle Pivotelement p 2 Trenne Elemente < p von Elementen > p 3 Tausche Pivot zwischen die beiden Teillisten 4 Verfahre Rekursiv mit den Teillisten Beispiel: 9 2 8 4 3 12 23 1 best O(n log n) average O(n log n) worst O(n 2 ) a nicht stabil in-place a ironischerweise bei vorsortierter Eingabe ;) Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 9 / 10

Quicksort (12.3) Verfahren 1 Wähle Pivotelement p 2 Trenne Elemente < p von Elementen > p 3 Tausche Pivot zwischen die beiden Teillisten 4 Verfahre Rekursiv mit den Teillisten Beispiel: 9 2 8 4 3 12 23 1 best O(n log n) average O(n log n) worst O(n 2 ) a nicht stabil in-place a ironischerweise bei vorsortierter Eingabe ;) Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 9 / 10

Ende Guten Appetit! Teufelspfanne mit Rindfleisch und Reis, scharf 2,20 Putenrollbraten mit Estragonsoße 1,80 Blumenkohl-Käse-Medaillon mit Schnittlauch-Dip 1,50 Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 19. Januar 2010 10 / 10