Abschnitt 19: Sortierverfahren

Ähnliche Dokumente
Algorithmen und Datenstrukturen. Kapitel 3: Sortierverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen

JAVA - Suchen - Sortieren

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

Algorithmen und Datenstrukturen 1

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

Programmieren I. Kapitel 7. Sortieren und Suchen

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

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

Algorithmen und Datenstrukturen 1

Kapitel 6 Elementare Sortieralgorithmen

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

Übung Algorithmen und Datenstrukturen

Grundlagen der Programmierung

Aufgabe (Schreibtischtest, Algorithmenanalyse)

Übung: Algorithmen und Datenstrukturen SS 2007

7. Sortieren Lernziele. 7. Sortieren

Sortierverfahren für Felder (Listen)

Übung Algorithmen I

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

Datenstrukturen und Algorithmen. 7. Suchen in linearen Feldern

Grundlagen der Programmierung 2. Sortierverfahren

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)

Das Suchproblem. Gegeben Menge von Datensätzen. Beispiele Telefonverzeichnis, Wörterbuch, Symboltabelle

Tutoraufgabe 1 (Sortieralgorithmus):

4. Sortieren 4.1 Vorbemerkungen

Kapitel 8 Fortgeschrittene Sortieralgorithmen

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

Datenstrukturen und Algorithmen

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Suchen und Sortieren

Einführung in die Informatik 2

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

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

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

Algorithmen und Datenstrukturen

Abschnitt: Algorithmendesign und Laufzeitanalyse

Übung Algorithmen und Datenstrukturen

Untere Schranke für allgemeine Sortierverfahren

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

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

Interne Sortierverfahren

Sortieralgorithmen. Selection Sort

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

Quicksort ist ein Divide-and-Conquer-Verfahren.

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

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g:

Ü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:

NAME, VORNAME: Studiennummer: Matrikel:

Aufgabe 8. 1 Arbeitsweise illustrieren. 2 Korrektheitsbeweis führen. 3 Laufzeitanalyse durchführen.

Programmierung mit C Algorithmen

Kap. 4.7 Skiplisten. 14./15. VO DAP2 SS /16. Juni 2009

Algorithmen und Datenstrukturen Heapsort

Klausur Algorithmen und Datenstrukturen SS August Arbeitszeit 90 min

Datenstrukturen und Algorithmen

Build-Max-Heap. Build-Max-HeappAq. Satz Nach Ablauf von Build-Max-Heap ist A ein Heap. Build-Max-Heap hat Laufzeit Opnq.

Vorlesung Datenstrukturen

Lineare Kongruenzgeneratoren und Quicksort

Grundlegende Sortieralgorithmen

Suchen. lineare Suche, binäre Suche, divide and conquer, rekursive und iterative Algorithmen, geordnete Daten, Comparable

Informatik II, SS 2014

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

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Grundlagen der Informatik

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist.

Kapitel 2. Sortieren. Adressenverwaltung (lexikographisch) Treerlisten bei Suchanfragen (Relevanz) Verdeckung (z-koordinate) ...

Kurs 1663 Datenstrukturen" Musterlösungen zur Klausur vom Seite 1. Musterlösungen zur Hauptklausur Kurs 1663 Datenstrukturen 15.

Humboldt-Universität zu Berlin Berlin, den Institut für Informatik

Definition Ein Heap (priority queue) ist eine abstrakte Datenstruktur mit folgenden Kennzeichen:

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Algorithmen und Datenstrukturen

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

Einführung in die Informatik I Kapitel II.3: Sortieren

Vorlesung Datenstrukturen

Algorithmen und Datenstrukturen 1-3. Seminar -

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Übungsklausur Algorithmen I

Randomisierte Algorithmen 2. Erste Beispiele

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

Mehrwegbäume Motivation

Algorithmen und Datenstrukturen

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) :

Übung Algorithmen und Datenstrukturen

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

Asymptotik und Laufzeitanalyse

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

Sortieralgorithmen. Direkte Sortierverfahren & Shellsort, Quicksort, Heapsort. Vorlesung Algorithmen und Datenstrukturen 2 im SS 2004

2. Effizienz von Algorithmen

Grundlagen: Algorithmen und Datenstrukturen

Transkript:

Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758 Überblick 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren 1 Allgemeines Informatik 2 (SS 07) 759

Motivation Sortieren ist eine wichtige Operation auf Mengen von Objekten. Sortierte Mengen erlauben deutlich effizienteren Zugriff auf einzelne Elemente (z.b. durch binäre Suche). Problemstellung: Gegeben: n Objekte a 1,..., a n mit ihren Schlüsseln k 1,..., k n, anhand derer die Objekte sortiert werden sollen. Gesucht: Eine Anordnung a i1,..., a in mit (i 1,..., i n ) ist eine Permutation von (1,..., n) k i1 k i2... k in (Sortierkriterium). Beispiel: 7 5 11 10 1 14 6 2 9 11 1 2 5 6 7 9 10 11 11 14 a 1 a 2... a 10 a i1 a i2... a i10 a 5 a 8 a 6 = = = 19 Sortierverfahren 1 Allgemeines Informatik 2 (SS 07) 760 Allgemeines Der Typ der Schlüssel k i muss entweder primitv sein, oder das Interface Comparable implementieren. Im folgenden betrachten wir folgende Vereinfachungen: wir verwenden die Schreibweisen k i < k j, k i > k j, usw., bzw. k i = k j unabhängig davon, ob k l einen primitiven Datentyp oder einen Objekttyp besitzt (im letzteren Fall müssten wir eigentlich mit den Methoden compareto bzw. equals arbeiten), wir nehmen an, dass die Datenstruktur zur Verwaltung der Menge ein einfaches Array ist. Allgemeiner Sortieralgorithmus: while (i, j) : (i < j) (k i > k j ) do vertausche a i und a j ; Problem: Algorithmus nicht deterministisch. Daher: speziellere Algorithmen nötig. 19 Sortierverfahren 1 Allgemeines Informatik 2 (SS 07) 761

Stabilität von Sortierverfahren Definition (Stabilität von Sortierverfahren) Ein Sortierverfahren heisst stabil, wenn die relative Ordnung von Elementen mit gleichen Schlüsselwerten beim Sortieren erhalten bleibt, d.h. wenn für die sortierte Menge k i1,... k in gilt: k ij = k il und j < l i j < i l. Definition (in situ Sortierverfahren) Ein Sortierverfahren heisst in situ, wenn zusätzlich zu dem zu sortierenden Array kein weiterer Speicherplatz benötigt wird. Dabei wird angenommen, dass die zu sortierenden Objekte die Indexpositionen 1,... n belegen und das Feld mit Index 0 für Vertauschungen genutzt werden kann. 19 Sortierverfahren 1 Allgemeines Informatik 2 (SS 07) 762 Klassifikation von Sortierverfahren Es gibt verschiedene Kriterien, um Sortieralgorithmen zu klassifizieren, z.b. ihre Stabilität oder ihren Speicherplatzbedarf. Das in dieser Vorlesung wesentliche Kriterium ist das Laufzeitverhalten. Um das Laufzeitverhalten unterschiedlicher Verfahren miteinander zu vergleichen, zählen wir die Anzahl der bei einer Sortierung von n Objekten durchzuführenden Operationen (in Abhängigkeit von n). 19 Sortierverfahren 1 Allgemeines Informatik 2 (SS 07) 763

Lauzeitverhalten von Sortierverfahren Die beiden wesentlichen Operationen der meisten Sortierverfahren sind: Vergleiche von Schlüsselwerten um Informationen über die vorliegende Ordnung zu erhalten. Im folgenden bezeichnen wir die Anzahl dieser Schlüssel-Vergleiche mit C(n). Zuweisungsoperationen, z.b. Vertauschungoperationen oder Tranpositionen von Objekten (i.a. innerhalb eines Arrays) zur Herstellung der Sortierordnung. Im folgenden bezeichnen wir die Anzahl dieser Zuweisungsoperationen mit M(n). Wir beschränken uns hier auf Algorithmen, die nur Schlüsselvergleiche und Transpositionen verwenden. 19 Sortierverfahren 1 Allgemeines Informatik 2 (SS 07) 764 Wie schnell kann man sortieren? Gesucht: eine untere Schranke für die Anzahl C max (n) von Schlüsselvergleichen, die im schlechtesten Fall notwendig sind, um n Objekte zu sortieren. Entscheidungsbaum für 3 Schlüssel k 1, k 2 und k 3 : ja k 1 k 2 k 2 nein k 1 ja k 1 k 2 nein ja k 1 k 2 nein k 3 k 2 k 1 ja nein ja nein k 1 k 2 k 3 k 1 k 2 k 2 k 1 k 2 k 1 In einem Entscheidungsbaum ohne redundante Vergleiche entspricht jedes Blatt einer der n! verschiedenen Permutationen. Da der Entscheidungsbaum ein binärer Baum ist, hat er für n Elemente eine minimale Höhe von log(n!). 19 Sortierverfahren 1 Allgemeines Informatik 2 (SS 07) 765

Wie schnell kann man sortieren? Damit gilt für einen beliebigen Sortieralgorithmus: C max (n) O(n log n), denn C max (n) log(n!) und n! n (n 1)... ( n/2 ) ( n 2 ) n 2 log 2 (n!) n 2 log 2 (n ) = O(n log n). 2 Resultat: Sortierverfahren haben mindestens eine Laufzeit von O(n log n). 19 Sortierverfahren 1 Allgemeines Informatik 2 (SS 07) 766 Überblick 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren 2 Einfache Sortierverfahren Informatik 2 (SS 07) 767

Überblick Einfache Sortierverfahren besitzen meist eine Laufzeit von O(n 2 ). Für wenige Objekte (kleine Werte von n) ist dies meist noch akzeptabel, für große Mengen (z.b. n > 100) allerdings nicht mehr. In den Übungen haben wir bereits eine Reihe einfacher Sortieralgorithmen kennen gelernt, von denen wir einige im folgenden nocheinmal kurz besprechen. Was die Java-Programme anbetrifft, wird hier auf die Übungen verwiesen. 19 Sortierverfahren 2 Einfache Sortierverfahren Informatik 2 (SS 07) 768 Sortieren durch Abzählen: Count Sort Prinzip: Der j-te Schlüssel der sortierten Folge ist größer als j 1 der übrigen Schlüssel. Die Position eines Schlüssels in der sortierten Folge kann damit durch Abzählen der kleineren Schlüssel ermittelt werden. Vorgehen: Für jedes Objekt o im ursprünglichen Array: zähle die Objekte o mit o < o. Laufzeit: C(n) = (n 1) + (n 2) +... + 1 = n (n 1) 2 = O(n 2 ) M(n) = C(n) = O(n 2 ) Das Verfahren ist nicht in situ. Das Verfahren ist stabil (wird instabil falls Test o o). 19 Sortierverfahren 2 Einfache Sortierverfahren Informatik 2 (SS 07) 769

Sortieren durch direktes Auswählen: Selection Sort Prinzip/Vorgehen: Suche aus allen n Elementen das kleinste und setze es an die erste Stelle. Wiederhole dieses Verfahren für die verbleibenden Elemente. Nach n 1 Durchläufen ist die Folge sortiert. Laufzeit: C(n) = (n 1) + (n 2) +... + 1 = n (n 1) 2 = O(n 2 ) M (n) = O(n log n) (ohne Beweis) Das Verfahren ist in situ. Je nach Implementierung ist das Verfahren stabil. 19 Sortierverfahren 2 Einfache Sortierverfahren Informatik 2 (SS 07) 770 Sortieren durch direktes Austauschen: Bubble Sort Prinzip: Vertausche die relative Reihenfolge benachbarter Elemente, sodass kleine Elemente nach vorne und größere Elemente nach hinten wandern. Vorgehen: Im ersten Durchlauf werden die Paare (a n 1, a n ), (a n 2, a n 1 ),... bearbeitet. Dadurch wandert das kleinste Element an die erste Position im Array. Nach n 1 Durchläufen ist die Sortierung abgeschlossen. Laufzeit: C(n) = (n 1) + (n 2) +... + 1 = n (n 1) 2 = O(n 2 ) M (n) = O(n 2 ) (ohne Beweis) Das Verfahren ist in situ. Je nach Implementierung ist das Verfahren stabil. 19 Sortierverfahren 2 Einfache Sortierverfahren Informatik 2 (SS 07) 771

Überblick 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren 3 Effizientes Sortieren: Quicksort Informatik 2 (SS 07) 772 Das Divide-and-Conquer-Prinzip Analyse: einfache Sortierverfahren reduzieren die Größe des noch zu sortierenden Arrays in jedem Schritt lediglich um eins. Idee: Reduziere das noch zu sortierende Array in jedem Schritt um die Hälfte. Dadurch wird eine Laufzeit von O(n log n) ermöglicht. Das allgemeine Algorithmus-Prinzip von Quicksort heißt Divide-and-Conquer (teile-und-beherrsche). Divide-and-Conquer-Algorithmen zerlegen ein gegebenes Problem solange in kleinere Probleme, bis diese beherrschbar sind. Die globale Lösung ergibt sich durch Verschmelzen der einzelnen (Teil-)Lösungen. 19 Sortierverfahren 3 Effizientes Sortieren: Quicksort Informatik 2 (SS 07) 773

Divide-and-Conquer-Sortieralgorithmen Allgemeines Schema eines Divide-and-Conquer-Sortieralgorithmus: ALGORITHM Divide-and-Conquer-Sort IF Objektmenge klein genug THEN loese das Problem direkt; ELSE DIVIDE: Zerlege die Menge in Teilmengen moeglichst gleicher Groesse; CONQUER: Loese das Problem fuer jede der Teilmengen; MERGE: ENDIF END Berechne aus den Teilloesungen die Gesamtloesung; Wichtige Eigenschaft: Jedes Divide-and-Conquer-Sortierverfahren, dessen Divide- und Merge-Schritt in O(n) Zeit durchgeführt werden können und das eine balancierte Unterteilung des Problems garantiert, besitzt eine Laufzeit von O(n log n). 19 Sortierverfahren 3 Effizientes Sortieren: Quicksort Informatik 2 (SS 07) 774 Quicksort: Prinzip Ein (prinzipiell beliebiger) Schlüssel x aus dem Array wird ausgewählt (das sog. Pivot-Element). Divide-Schritt: das Array wird in Schlüssel x und Schlüssel < x zerlegt. Conquer-Schritt: die beiden resultierenden Teilarrays werden rekursiv bis auf Elementebene in gleicher Weise behandelt. Merge-Schritt: entfällt, durch entsprechende Speicherung der Teilarrays innerhalb des Arrays. 19 Sortierverfahren 3 Effizientes Sortieren: Quicksort Informatik 2 (SS 07) 775

Quicksort: Algorithmus ALGORITHM QuickSort(ARRAY S) IF S.length = 1 THEN RETURN S; ELSE // DIVIDE: Waehle ein Pivot-Element x aus S; Initialisiere zwei Teilfolgen S1 und S2; FOR EACH y IN S DO IF y < x THEN fuege x zu S1 hinzu; ELSE fuege x zu S2 hinzu; ENDIF ENDFOR // CONQUER: S1 = QuickSort(S1); S2 = QuickSort(S2); // MERGE: RETURN Konkatenation aus S1 und S2 ; ENDIF END Arbeit im Divide-Schritt: O(n). Arbeit im Merge-Schritt: O(1). 19 Sortierverfahren 3 Effizientes Sortieren: Quicksort Informatik 2 (SS 07) 776 Quicksort: Beispiel 9 5 1 12 8 10 6 3 Rekursive Unterteilung des Array bzgl. des Pivot-Elements ergibt einen Binärbaum über den Array-Elementen (innere Knoten entsprechen den einzelnen Pivot-Elementen). 9 6 10 3 8 12 1 5 Beobachtung: Höhe des Baumes entspricht Rekursionstiefe des Verfahrens. Erwünscht: balancierter binärer Baum Rekursionstiefe O(log n). 19 Sortierverfahren 3 Effizientes Sortieren: Quicksort Informatik 2 (SS 07) 777

Quicksort: Laufzeitanalyse (Divide-Schritt) Ausgangspunkt des Divide-Schritt: angenommen das k-te Element der Sortierreihenfolge wird als Pivot gewählt und dann an Position k positioniert. Im Zerlegungsprozess wird jedes Element betrachtet: C(n) = n. Die Anzahl der Vertauschungsoperationen ist abhängig von k: M(n) = (Anz. Elemente < k) (WS für eine Vertauschung) M(n) = (Anz. Elemente < k) (WS, dass Element im rechten Teil) M(n) n (k 1) = (k 1). n 19 Sortierverfahren 3 Effizientes Sortieren: Quicksort Informatik 2 (SS 07) 778 Quicksort: Laufzeitanalyse (Divide-Schritt) Mittelwert M(n) der Vertauschungen über alle k = 1,..., n für den ersten Zerlegungsschritt: M(n) = 1 n n (k 1) k=1 = 1 n 2 n 1 k=0 n (n 1) = 2 n = O(n). k (n k) n (k 1) n 2 n2 3 n + 1 6 n = n 1/n 6 19 Sortierverfahren 3 Effizientes Sortieren: Quicksort Informatik 2 (SS 07) 779

Quicksort: Laufzeitanalyse (Gesamt/best case) Der günstigste Fall Das Array wird in jeweils zwei Teilarrays etwa gleicher Größe geteilt. Dann folgt für den Gesamtzeitbedarf T(n): T best (n) = c n + 2T( n 2 ) = c n + 2(c n 2 + 2T(n 4 )) = 2cn + 4T( n 4 ) =... = log n c n + n T(1) = O(n log n) 19 Sortierverfahren 3 Effizientes Sortieren: Quicksort Informatik 2 (SS 07) 780 Quicksort: Laufzeitanalyse (Gesamt/average case) Der durchschnittliche Fall Das Array wird jeweils bezüglich eines zufällig ausgewählten Pivot-Elements zerlegt. Nach Analysen ist dieser Fall nur um den Faktor 2 ln(2) 1, 39 (ca. 40%) schlechter. T (n) = O(n log n). 19 Sortierverfahren 3 Effizientes Sortieren: Quicksort Informatik 2 (SS 07) 781

Quicksort: Laufzeitanalyse (Gesamt/worst case) Der schlechteste Fall Degenerierung zur linearen Liste: stets wird das größte/kleinste Element als Pivot gewählt. T worst (n) = (n 1) + (n 2) +... + 1 = Beachte hierbei auch die hohe Rekursionstiefe n. n (n 1) 2 = O(n 2 ) 19 Sortierverfahren 3 Effizientes Sortieren: Quicksort Informatik 2 (SS 07) 782 Quicksort: Schlussbemerkungen Austausch von Schlüsseln über große Distanzen Array ist schnell nahezu sortiert. Wie alle komplexen Sortierverfahren ist Quicksort schlecht für kleine n. Es gibt verschiedene Methoden, die Wahrscheinlichkeit des schlechtesten Falls zu vermindern; dennoch bleibt Quicksort immer eine Art Glückspiel, denn es bleibt T worst (n) = O(n 2 ). Quicksort war lange Zeit das im Durchschnittsverhalten beste bekannte Sortierverfahren. Die statischen Methodenjava.util.Arrays.sort implementieren Quicksort. 19 Sortierverfahren 3 Effizientes Sortieren: Quicksort Informatik 2 (SS 07) 783

Überblick 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren 4 Zusammenfassung Informatik 2 (SS 07) 784 Zusammenfassung Sie kennen jetzt die untere Grenze der Laufzeit von Sortierverfahren, die Idee und die Laufzeit von einfachen Sortierverfahren, die Idee sowie Vor- und Nachteile des Sortierverfahrens Quicksort. 19 Sortierverfahren 4 Zusammenfassung Informatik 2 (SS 07) 785

Ausblick Vertiefung der objektorientierten Programmierung: Programmierpraktikum (3. Semester) diverse Hauptstudiumsvorlesungen Vertiefung Datenstrukturen und Algorithmen: Effiziente Algorithmen (4. Semester) Index- und Speicherstrukturen (Hauptstudium) Spatial-Temporal-Multimedia-Database-Systems (Hauptstudium) 19 Sortierverfahren 4 Zusammenfassung Informatik 2 (SS 07) 786