Vorlesung Datenstrukturen

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Datenstrukturen"

Transkript

1 Vorlesung Datenstrukturen Sortieren von Feldern (2) Effiziente Sortieralgorithmen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 124

2 Quicksort Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 125

3 Funktionsprinzip Pivot-Element Wir wählen zunächst ein beliebiges Element des Feldes - das so genannte Pivot-Element. Partitionierung Das zu sortierende Feld wird in zwei virtuelle Felder aufgespaltet. Virtuell bedeutet, dass der Speicherplatz des ursprünglichen Feldes für die Teilfelder Verwendung findet. In das erste Teilfeld werden alle Elemente gebracht, deren Schlüssel kleiner oder gleich dem Schlüssel des Pivot-Elements ist. In das zweite Teilfeld werden alle Elemente gebracht, deren Schlüssel größer oder gleich dem Schlüssel des Pivot-Elements ist. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 126

4 Funktionsprinzip Rekursive Partitionierung der Teilfelder Die aus der Partitionierung resultierenden beiden Teilfelder werden rekursiv wieder nach dem gleichen Schema bearbeitet: Bestimmen eines Pivot-Elements Aufteilen der Elemente jedes Feldes auf die zwei (virtuellen) Teilfelder Terminierung der Rekursion Diesen Prozess führen wir so lange fort, bis nur noch einelementige Felder existieren, die nicht mehr sortiert werden müssen. An dieser Stelle endet der Algorithmus, da das ursprüngliche Feld nun sortiert ist. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 127

5 Quicksort - Pseudocode Quicksort(Feld) if ( Feldlänge > 1 ) Bestimme Pivot-Element P while ( es sind noch unzugeordnete Elemente im Feld ) Entnimm Element E aus Feld if E <= P Füge E in Teilfeld1 ein if E >= P Füge E in Teilfeld2 ein Quicksort( Teilfeld1 ) Quicksort( Teilfeld2 ) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 128

6 Wahl des Pivot-Elements Ziel der Partitionierung Die Leistungsfähigkeit von Quicksort steht und fällt mit der richtigen Auswahl des Pivot-Elements, denn Quicksort arbeitet am effizientesten, wenn jede Partitionierung zwei gleich große Teilfelder erzeugt. Konsequenz Wir müssen das Pivot-Element so bestimmen, dass die Anzahl der Elemente, die kleiner oder gleich dem Pivot-Element sind ungefähr der Anzahl an Elementen entspricht, die größer oder gleich dem Pivot-Element sind. Die ambivalente Zuordnung von Elementen, die gleich dem Pivot-Element sind, in entweder das linke oder das rechte Teilfeld ist beabsichtigt und geschieht mit der Zielstellung, die beiden Teilfelder möglichst gleich groß zu halten. Es existieren verschiedene Strategien, um das bestmögliche Pivot-Element zu bestimmen. Im Moment entscheiden wir uns für das jeweilige Element in der Mitte eines (Teil-)Feldes. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 129

7 Aufteilen der Elemente Realisierung der Partitionierung Nach der Bestimmung des Pivot-Elements müssen die Feldelemente geeignet auf die zwei Teilfelder verteilt werden. Da wir keine neuen Felder anlegen wollen und auch die Grenzen der beiden Teilfelder noch nicht kennen, vertauschen wir so lange Elemente im Feld, wie sich Datenkonstellationen finden lassen, bei denen ein Element mit kleinerem Index größer als das Pivot-Element und ein Element mit größerem Index kleiner als das Pivot-Element ist. Dazu lassen wir die beiden Feldgrenzen aufeinander zu laufen bis bei den beiden Elementen an den jeweiligen Grenzen eine Verletzung des Pivot-Kriteriums eintritt. Dann vertauschen wir die Elemente und wiederholen diesen Vorgang so lange, bis sich die Grenzen überschneiden. Die Feldposition, an der die Überschneidung auftritt, bestimmt sowohl die Grenze der beiden Teilfelder als auch die endgültige Position des Pivot-Elements. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 130

8 Quicksort - Vorbereitungen Vorbereitender Schritt Da wir die endgültige Position des Pivot-Elements im Vorhinein nicht kennen, vertauschen wir vor der Aufteilung der Elemente noch das erste Feldelement mit dem Pivot-Element, müssen diese Vertauschung nach der Aufteilung aber wieder rückgängig machen. Dazu vertauschen wir das Element an der ermittelten Grenzposition zwischen den Teilfeldern mit dem in der ersten Feldkomponente zwischengelagerten Pivot-Element. Vertauschen zweier Elemente Aus Gründen der Übersichtlichkeit lagern wir das Vertauschen in eine Funktion swap aus: void swap(elementtyp& a, Elementtyp& b) { Elementtyp temp = a; a = b; b = temp; } Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 131

9 Quicksort - Sortierung void quicksort(elementtyp data[], int first, int last) { if ((last-first) > 0) { // einelementige Felder sind schon sortiert int lower = first+1, upper = last; swap(data[first], data[(first+last)/2]); // Entnimm das Pivot-Element Elementtyp pivot = data[first]; while (lower <= upper) { while (data[lower] < pivot && lower < last)// Finde ein größeres Element lower++; // als das Pivot-Element im linken Teilfeld while (data[upper] > pivot) // Finde ein kleineres Element als das upper--; // Pivot-Element im rechten Teilfeld if (lower < upper) swap(data[lower++], data[upper--]); // Vertausche beide Elemente else lower++; } swap(data[upper], data[first]); // Schreibe Pivot-Element zurück quicksort(data, first, upper-1); // Sortiere linkes Teilfeld quicksort(data, upper+1, last); // Sortiere rechtes Teilfeld } } [nach Drozdek] Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 132

10 Performanz von Quicksort Die Leistungsfähigkeit von Quicksort hängt von der Wahl des Pivot-Elements und der daraus resultierenden Aufteilung der Elemente auf die beiden Teilfelder ab. Best Case Der Idealfall ist erreicht, wenn jede Partitionierung etwa gleich große Teilfelder liefert, d.h. aus einem Feld mit n Elementen werden im ersten Schritt zwei Teilfelder mit etwa n/2 Elementen, aus diesen dann 4 Teilfelder mit etwa n/4 Elementen usw. Folglich lässt sich die Anzahl an nötigen Vergleichen wie folgt abschätzen: n + 2 n n n n n n = n(logn +1) Dies entspricht einer Laufzeit von O(n log n). Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 133

11 Performanz von Quicksort Die Leistungsfähigkeit von Quicksort hängt von der Wahl des Pivot-Elements und der daraus resultierenden Aufteilung der Elemente auf die beiden Teilfelder ab. Worst Case Im ungünstigsten Fall schränkt die Partitionierung die Feldgröße in jedem Rekursionsschritt immer nur um Eins ein, d.h. ein Teilfeld ist leer und das andere Teilfeld enthält außer dem Pivot-Element alle verbleibenden Elemente. Damit lässt sich die Anzahl an notwendigen Vergleichen wie folgt abschätzen: n 2 1 n 2 + n 3+ n = i = (n 1)(n 2) 2 i=1 Dies entspricht einer Laufzeit von O(n 2 ). Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 134

12 Kriterien für die Wahl des Pivot-Elements Problem Wie soeben gezeigt, kann das Laufzeitverhalten von Quicksort schlimmstenfalls zu O(n 2 ) entarten. Ursache Letztendlich ist dafür eine dauerhaft falsche Auswahl des Pivot-Elements verantwortlich, so bewirkt etwa eine Selektion des kleinsten oder des größten Feldelements genau jene ungünstigste Partitionierung in ein leeres Teilfeld und ein Teilfeld mit allen Restelementen. Statistische Relevanz Leider kann man diese Situation nicht ignorieren, weil es eher unwahrscheinlich erscheint, immer das kleinste oder größte Feldelement als Pivot-Element zu selektieren, denn so führt z.b. die Anwendung von Quicksort auf ein bereits sortiertes Feld bei Verwendung des jeweils ersten oder letzten Feldelements als Pivot-Element zu eben dieser Situation. Unser Ansatz Wir wählen das Mittelelement um Probleme mit sortierten Feldern zu vermeiden. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 135

13 Wahl des optimalen Pivot-Elements Allgemeines Optimum Durch die Verwendung des Medians als Pivot-Element wird während der Partitionierung immer eine Halbierung des Feldes erreicht. Median Bezeichnet in der Statistik eine Grenze zwischen zwei Hälften. Der Median ist im Gegensatz zum arithmetischen Mittel robuster gegenüber Ausreißern. Theoretische Berechnung Prinzipiell lässt sich der Quicksort-Algorithmus um eine Medianberechnung erweitern. Dadurch wird der worst case verhindert und man erreicht generell eine Laufzeitkomplexität von O(n log n). Praktische Approximation Praktisch kostet die Medianberechnung zusätzliche Zeit (auch wenn wir in O(n log n) bleiben). Deshalb approximiert man diese Methode, indem man eine Stichprobe aus drei Elementen des Feldes entnimmt (z.b. das erste, das mittlere und das letzte) und aus dieser den Median bestimmt. Es gibt natürlich noch viele weitere Verfahren um Quicksort zu stabilisieren. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 136

14 Quicksort - Zusammenfassung Performanz im Average Case Trotz der beschriebenen Entartungen ist Quicksort in der Regel das schnellste Sortierverfahren. Empirische Untersuchungen haben gezeigt, dass es mindestens um den Faktor zwei schneller als irgendein anderes Verfahren ist. Hauptkriterium Die Leistung von Quicksort im Wesentlichen von der Wahl des Pivot-Elements abhängig. Hierbei muss jedoch ein Trade-off zwischen der schnellen Wahl eines möglicherweise ungünstigen Pivot- Elements und der langsamen Wahl des besten Pivot-Elements mit einkalkuliert werden. Ausnahme Für kleine Felder mit bis zu zehn Elementen ist Quicksort nicht der schnellste Algorithmus. Hierfür wäre z.b. InsertionSort geeigneter (auch zur Sortierung kleiner Felder innerhalb von Quicksort). Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 137

15 Mergesort Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 138

16 Mergesort Grundidee Geordnetes Einfügen (Verschmelzen) der Elemente zweier sortierter Hälften eines Feldes in ein Feld. Rekursion Da die geordneten Hälften ihrerseits sortiert werden müssen, teilt dieser Algorithmus beim Abstieg der Rekursion die jeweiligen Teilfelder so lange wieder in zwei Teilfelder, bis wir bei einelementigen (und damit implizit sortierten) Feldern angekommen sind. Diese werden dann beim rekursiven Aufstieg zu jeweils größeren sortierten Feldern verschmolzen. Pseudocode mergesort(data[]) if ( data[] enthält mindestens zwei Elemente ) mergesort ( linkes Teilfeld von data[] ) mergesort ( rechtes Teilfeld von data[] ) merge ( data[] ) // Verschmelze die Teilfelder geordnet Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 139

17 Das Verschmelzen Vorbemerkung Um nur mit einem Feld zu arbeiten, übergeben wir als Parameter die Grenzen des Feldes, dessen zwei sortierte Teilfelder noch verschmolzen werden müssen. Nichtsdestotrotz benötigen wir für den jeweiligen Verschmelzungsvorgang noch ein temporäres Feld, das die Dimensionen des durch die übergebenen Feldgrenzen definierten virtuellen Feldes aufweist. Pseudocode merge(data[], first, last) middle = (first + last) / 2; pos = 0; left = first; right = middle + 1; while (es sind noch Elemente in irgendeinem Teilfeld) if data[left] < data[right] // Element des linken Teilfelds ist kleiner als das des rechten temp[pos++] = data[left++]; // Füge Element des linken Teilfelds in temp[] ein else // sonst temp[pos++] = data[right++]; // Füge Element des rechten Teilfelds in temp[] ein Kopiere temp nach data Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 140

18 Performanzanalyse (1) Anzahl an Datenbewegungen In jedem Aufruf von merge() kopieren wir alle n Elemente des (jeweiligen) Feldes in das Temporärfeld und wieder zurück, d.h. die Anzahl der Bewegungen pro Aufruf beträgt 2n. Da Mergesort rekursiv definiert ist, können wir für die Anzahl aller Datenbewegungen M(n) analog feststellen, dass sich diese aus der Anzahl der Bewegungen eines Durchlaufs und der Gesamtzahl der Bewegungen der beiden Teilfelder ergibt, d.h. M(n) = 2M(n/2) + 2n. Die Rekursion bricht bei einelementigen Feldern ab, bei denen keine Datenbewegungen entstehen, da sie schon sortiert sind, d.h. M(1) = 0. Durch Einsetzen der jeweils nächst tieferen Rekursionsstufe und unter Beachtung der sich aus der jeweiligen Halbierung des Feldes ergebenden Rekursionstiefe i = log n mit n = 2 i lässt sich die Anzahl an Datenbewegungen explizit berechnen: " M(n) = 2M n % $ # 2& ' + 2n = 4M " n % $ # 4 & ' + 4n = 8M " n % $ # 8 & ' + 6n =... = 2 i M " n % $ # 2 ' + 2in = 2n log n i & Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 141

19 Performanzanalyse (2) Anzahl an Vergleichen In jedem Durchlauf von merge() vergleichen wir die n Elemente des jeweiligen Feldes miteinander, führen also n 1 Vergleichsoperationen durch. Analog der Berechnung der Datenbewegungen lässt sich die Gesamtzahl an Vergleichen C(n) ermitteln: C(n) = 2C(n/2) + n 1 wobei die Rekursion wieder bei Feldern mit einem Element ohne Vergleich endet, d.h. C(1) = 0: C(n) = 2 i C! " # n 2 i $ % & + in 2 i 1 = n log n n + 1 Konsequenz Mergesort weist ein allgemeines Laufzeitverhalten von O(n log n) auf. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 142

20 Vergleich der Verfahren Mergesort versus Quicksort Da Mergesort ebenfalls ein allgemeines Laufzeitverhalten von O(n log n) aufweist, befindet es sich in der gleichen Leistungsklasse wie Quicksort. MergeSort ist für das externe Sortieren geeignet. Aber Mergesort benötigt zusätzlichen Speicherplatz um das Mischen der sortierten Teilfelder zu ermöglichen. Wegen der zusätzlichen Verschiebungen ist Mergesort in der Praxis im Allgemeinen langsamer als Quicksort. Des Weiteren kann die Anwendung des Mergesort-Algorithmus bei sehr großen Datenmengen aufgrund des möglicherweise nicht zur Verfügung stehenden Speicherplatzes unmöglich sein. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 143

21 Praxistest: Average Case Zum Vergleich der tatsächlichen Leistungsfähigkeit verschiedener Sortierverfahren werden tatsächlich erzielte Laufzeiten (in Sekunden) der vorgestellten Algorithmen für zufällig verteilte Daten und verschiedene Feldgrößen einander gegenübergestellt: Feldgröße InsertionSort 3,18s 13,51s 53,66s 226,62s Selection Sort 5,17s 22,03s 91,01s 366,30s BubbleSort 10,88s 45,09s 255,68s 747,15s Quicksort 0,05s 0,05s 0,05s 0,28s Mergesort 0,05s 0,11s 0,22s 0,49s Auch wenn diese Testergebnisse (nach Drozdek) nicht mehr ganz taufrisch sind, bestätigen sie doch ziemlich gut das theoretisch ermittelte Leistungsverhalten der einzelnen Verfahren. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 144

22 Praxistest: Best Case Zum Vergleich der tatsächlichen Leistungsfähigkeit verschiedener Sortierverfahren werden tatsächlich erzielte Laufzeiten (in Sekunden) der vorgestellten Algorithmen für aufsteigend sortierte Daten und verschiedene Feldgrößen einander gegenüber gestellt: Feldgröße InsertionSort 0,00 0,00 0,00 0,05 Selection Sort 5,65 20,82 84,47 355,64 BubbleSort 5,22 20,87 87,55 366,91 Quicksort 0,00 0,00 0,06 0,11 Mergesort 0,00 0,11 0,16 0,49 Auch wenn diese Testergebnisse (nach Drozdek) nicht mehr ganz taufrisch sind, bestätigen sie doch ziemlich gut das theoretisch ermittelte Leistungsverhalten der einzelnen Verfahren. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 145

23 Praxistest: Worst Case Zum Vergleich der tatsächlichen Leistungsfähigkeit verschiedener Sortierverfahren werden tatsächlich erzielte Laufzeiten (in Sekunden) der vorgestellten Algorithmen für absteigend sortierte Daten und verschiedene Feldgrößen einander gegenüber gestellt: Feldgröße InsertionSort 6,54 26,69 114,35 460,94 Selection Sort 5,55 22,41 90,96 381,13 BubbleSort 15,60 62,51 255, ,02 Quicksort 0,00 0,05 0,05 0,17 Mergesort 0,06 0,11 0,22 0,44 Auch wenn diese Testergebnisse (nach Drozdek) nicht mehr ganz taufrisch sind, bestätigen sie doch ziemlich gut das theoretisch ermittelte Leistungsverhalten der einzelnen Verfahren. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 146

24 Ende der Vorlesung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 147

Kapitel 6 Elementare Sortieralgorithmen

Kapitel 6 Elementare Sortieralgorithmen Kapitel 6 Elementare Sortieralgorithmen Ziel: Kennenlernen elementarer Sortierverfahren und deren Effizienz Zur Erinnerung: Das Sortier-Problem Gegeben: Folge A von n Elementen a 1, a 2,..., a n ; Eine

Mehr

JAVA - Suchen - Sortieren

JAVA - Suchen - Sortieren Übungen Informatik I JAVA - Suchen - Sortieren http://www.fbi-lkt.fh-karlsruhe.de/lab/info01/tutorial Übungen Informatik 1 Folie 1 Inhalt Suchen/Sortieren binary search mergesort bubblesort Übungen Informatik

Mehr

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

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7) Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.rwth-aachen.de/i2/dsal0/ Algorithmus 8. Mai 200 Joost-Pieter

Mehr

Grundlegende Sortieralgorithmen

Grundlegende Sortieralgorithmen Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch Sortieren in Java Man kann Sortierverfahren in einem imperativem oder einem objektorientierten Stil programmieren.

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung

Mehr

Grundlagen der Programmierung 2. Sortierverfahren

Grundlagen der Programmierung 2. Sortierverfahren Grundlagen der Programmierung 2 Sortierverfahren Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 30. Mai 2006 Sortieren Ziel: Bringe Folge von Objekten in eine Reihenfolge

Mehr

Programmieren I. Kapitel 7. Sortieren und Suchen

Programmieren I. Kapitel 7. Sortieren und Suchen Programmieren I Kapitel 7. Sortieren und Suchen Kapitel 7: Sortieren und Suchen Ziel: Varianten der häufigsten Anwendung kennenlernen Ordnung Suchen lineares Suchen Binärsuche oder Bisektionssuche Sortieren

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Binärbaum Suchbaum Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 356 Datenstruktur Binärbaum Strukturrepräsentation des mathematischen Konzepts Binärbaum

Mehr

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

Ü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: Übungsblatt 1 Aufgabe 1.1 Beweisen oder widerlegen Sie, dass für die im Folgenden definierte Funktion f(n) die Beziehung f(n) = Θ(n 4 ) gilt. Beachten Sie, dass zu einem vollständigen Beweis gegebenenfalls

Mehr

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

2 Sortieren. Beispiel: Es seien n = 8 und a = i : a i : ϕ(i) : a ϕ(i) : 2 Sortieren Das Sortieren einer Datenfolge ist eines der am leichtesten zu verstehenden und am häufigsten auftretenden algorithmischen Probleme. In seiner einfachsten Form besteht das Problem darin, eine

Mehr

Sortierverfahren für Felder (Listen)

Sortierverfahren für Felder (Listen) Sortierverfahren für Felder (Listen) Generell geht es um die Sortierung von Daten nach einem bestimmten Sortierschlüssel. Es ist auch möglich, daß verschiedene Daten denselben Sortierschlüssel haben. Es

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen 1 Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Ziele 2 Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen

Kapitel 9. Komplexität von Algorithmen und Sortieralgorithmen Kapitel 9 Komplexität von Algorithmen und Sortieralgorithmen Arrays 1 Ziele Komplexität von Algorithmen bestimmen können (in Bezug auf Laufzeit und auf Speicherplatzbedarf) Sortieralgorithmen kennenlernen:

Mehr

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de 4. Sortierverfahren Elementare Sortierverfahren - Sortieren durch

Mehr

Abschnitt: Algorithmendesign und Laufzeitanalyse

Abschnitt: Algorithmendesign und Laufzeitanalyse Abschnitt: Algorithmendesign und Laufzeitanalyse Definition Divide-and-Conquer Paradigma Divide-and-Conquer Algorithmen verwenden die Strategien 1 Divide: Teile das Problem rekursiv in Subproblem gleicher

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Joost-Pieter Katoen Datenstrukturen und Algorithmen 1/32 Datenstrukturen und Algorithmen Vorlesung 7: Sortieren (K2) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 27.10.2011 stefan.klampfl@tugraz.at 1 Wiederholung Wir vergleichen Algorithmen anhand des ordnungsmäßigen Wachstums von T(n), S(n), Asymptotische Schranken: O-Notation:

Mehr

Suchen und Sortieren (Die klassischen Algorithmen)

Suchen und Sortieren (Die klassischen Algorithmen) Suchen und Sortieren (Die klassischen Algorithmen) Lineare Suche und Binäre Suche (Vorbedingung und Komplexität) Sortieralgorithmen (allgemein) Direkte Sortierverfahren (einfach aber langsam) Schnelle

Mehr

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block Inhalt: InsertionSort BubbleSort QuickSort Block M.: "Java-Intensivkurs - In 14 Tagen lernen Projekte erfolgreich zu realisieren", Springer-Verlag 2007 InsertionSort I Das Problem unsortierte Daten in

Mehr

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

Sortierverfahren. Sortierverfahren für eindimensionale Arrays Sortierverfahren Sortierverfahren Sortieren durch Einfügen Sortieren durch Auswählen Sortieren durch Vertauschen (Bubblesort) Quicksort Sortierverfahren für eindimensionale Arrays 1 Gegeben ist eine beliebige

Mehr

10. Fortgeschrittene Programmiertechniken Fortgeschrittene Programmiertechniken

10. Fortgeschrittene Programmiertechniken Fortgeschrittene Programmiertechniken Fortgeschrittene Programmiertechniken 10-1 Zu den fortgeschrittenen Techniken gehören: Verwendung von komplexeren Datenstrukturen, z. B. von geschachtelten Strukturen, Baumstrukturen usw. Verwendung von

Mehr

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

Einführung in die Informatik I Kapitel II.3: Sortieren 1 Einführung in die Informatik I Kapitel II.3: Sortieren Prof. Dr.-Ing. Marcin Grzegorzek Juniorprofessur für Mustererkennung im Institut für Bildinformatik Department Elektrotechnik und Informatik Fakultät

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Sortieren Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v. Sommersemester

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 20 Einstieg in die Informatik mit Java Rekursion Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 20 1 Überblick 2 Rekursion 3 Rekursive Sortieralgorithmen 4 Backtracking

Mehr

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

Sortieralgorithmen. Jan Pöschko. 18. Januar Problemstellung Definition Warum Sortieren?... 2 Jan Pöschko 18. Januar 2007 Inhaltsverzeichnis 1 Problemstellung 2 1.1 Definition................................... 2 1.2 Warum Sortieren?.............................. 2 2 Einfache Sortieralgorithmen

Mehr

Algorithmen & Programmierung. Rekursive Funktionen (1)

Algorithmen & Programmierung. Rekursive Funktionen (1) Algorithmen & Programmierung Rekursive Funktionen (1) Berechnung der Fakultät Fakultät Die Fakultät N! einer nichtnegativen ganzen Zahl N kann folgendermaßen definiert werden: d.h. zur Berechnung werden

Mehr

Vom Leichtesten zum Schwersten Sortieralgorithmen

Vom Leichtesten zum Schwersten Sortieralgorithmen Aktivität 7 Vom Leichtesten zum Schwersten Sortieralgorithmen Zusammenfassung Häufig verwendet man Computer dazu Listen von Elementen in eine bestimmte Ordnung zu bringen. So kann man beispielsweise Namen

Mehr

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

Pro Informatik 2009: Objektorientierte Programmierung Tag 17. Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik Tag 17 Marco Block-Berlitz, Miao Wang Freie Universität Berlin, Institut für Informatik 08.09.2009 Agenda Tag 16 Datenstrukturen Abstrakte Datentypen, ADT Folge: Stack, Queue, Liste, ADT Menge: Bäume:

Mehr

damit hätten wir nach Ende der Schleife: "a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge".

damit hätten wir nach Ende der Schleife: a[0 n-1] enthält nur Elemente aus a[0 n-1], aber in sortierter Reihenfolge. Korrektheit Invariante: a[0 k-1] enthält nur Elemente aus a[0 k-1], aber in sortierter Reihenfolge Terminierung: Die Schleife endet mit k=n def insertionsort(a): for k in range( 1, len(a) ): while i >

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen Wintersemester 2014/15 3. Vorlesung Laufzeitanalyse Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I 2 Recap: Diskutieren Sie mit Ihrer NachbarIn! 1. 2. 3. Was sind

Mehr

Übersicht. Berechnung der Potenz für zwei ganze Zahlen Klausuraufgabe SS 2010! Berechnung der Cosinus-Funktion Klausuraufgabe WS 2010/2011!

Übersicht. Berechnung der Potenz für zwei ganze Zahlen Klausuraufgabe SS 2010! Berechnung der Cosinus-Funktion Klausuraufgabe WS 2010/2011! Algorithmen und Datenstrukturen Wintersemester 2012/13 8. Vorlesung Algorithmen in Java Jan-Henrik Haunert Lehrstuhl für Informatik I Übersicht Berechnung der Potenz für zwei ganze Zahlen Klausuraufgabe

Mehr

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002

Prof. H. Herbstreith Fachbereich Informatik. Leistungsnachweis. Informatik 1 WS 2001/2002 Prof. H. Herbstreith 30.01.2002 Fachbereich Informatik Leistungsnachweis Informatik 1 WS 2001/2002 Bearbeitungszeit 120 Minuten. Keine Hilfsmittel erlaubt. Aufgabe 1: 20 Punkte Vervollständigen Sie folgende

Mehr

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen?

1. Einführung. Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen? 1. Einführung Was ist ein Algorithmus (eine Datenstruktur)? Welche Probleme kann man damit lösen? Warum betrachten wir (effiziente) Algorithmen? Wie beschreiben wir Algorithmen? Nach welchen Kriterien

Mehr

Asymptotische Laufzeitanalyse: Beispiel

Asymptotische Laufzeitanalyse: Beispiel Asyptotische Laufzeitanalyse: n = length( A ) A[j] = x GZ Algorithen u. Datenstrukturen 1 31.10.2013 Asyptotische Laufzeitanalyse: n = length( A ) A[j] = x GZ Algorithen u. Datenstrukturen 2 31.10.2013

Mehr

BUBBLE SORT. Können wir die gefundenen Algorithmen auch auf Listen mit mehr als drei Elementen ausdehnen?

BUBBLE SORT. Können wir die gefundenen Algorithmen auch auf Listen mit mehr als drei Elementen ausdehnen? BUBBLE SORT Voraussetzungen der Schüler: Die Schüler besuchen bereits das zweite Jahr den Informatikunterricht und sollten den Umgang mit Feldern und Unterprogrammen mittlerweile beherrschen. Im ersten

Mehr

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

2.3.1 Einleitung Einfache Sortierverfahren Höhere Sortierverfahren Komplexität von Sortierverfahren Spezielle Sortierverfahren 2.3 Sortieren 2.3.1 Einleitung 2.3.2 Einfache Sortierverfahren 2.3.3 Höhere Sortierverfahren 2.3.4 Komplexität von Sortierverfahren 2.3.5 Spezielle Sortierverfahren 1 Selection-Sort Idee: Suche kleinstes

Mehr

Folge 13 - Quicksort

Folge 13 - Quicksort Für Abiturienten Folge 13 - Quicksort 13.1 Grundprinzip des Quicksort Schritt 1 Gegeben ist ein unsortierter Array von ganzen Zahlen. Ein Element des Arrays wird nun besonders behandelt, es wird nämlich

Mehr

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff Programmieren in C Rekursive Funktionen Prof. Dr. Nikolaus Wulff Rekursive Funktionen Jede C Funktion besitzt ihren eigenen lokalen Satz an Variablen. Dies bietet ganze neue Möglichkeiten Funktionen zu

Mehr

Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou

Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou Suchen Welche Telefonnummer hat Kurt Mehlhorn? Wie schreibt man das Wort Equivalenz?

Mehr

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n

Algorithmen und Datenstrukturen Wintersemester 2004/ November T(n) = T(n a) + T(a) + n Lehrstuhl für Praktische Informatik III Norman May B6, 29, Raum C0.05 68131 Mannheim Telefon: (0621) 181 2517 Email: norman@pi3.informatik.uni-mannheim.de Matthias Brantner B6, 29, Raum C0.05 68131 Mannheim

Mehr

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

Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen Technische Universität Wien Institut für Computergraphik und Algorithmen Arbeitsbereich für Algorithmen und Datenstrukturen 186.172 Algorithmen und Datenstrukturen 1 VL 4.0 Übungsblatt 1 für die Übung

Mehr

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen...

1. Grundlagen... 2. 2. Sortieren... 6. 1.1. Vertauschen... 13. 1.2. Selektion... 16. 1.3. Einfügen... 19. 1.4. Quicksort... 22. 3. Suchen... Suchen und Sortieren In diesem Kapitel behandeln wir Algorithmen zum Suchen und Sortieren Inhalt 1. Grundlagen... 2 2. Sortieren... 6 1.1. Vertauschen... 13 1.2. Selektion... 16 1.3. Einfügen... 19 1.4.

Mehr

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20.

Übersicht. Datenstrukturen und Algorithmen Vorlesung 5: Rekursionsgleichungen (K4) Übersicht. Binäre Suche. Joost-Pieter Katoen. 20. Übersicht Datenstrukturen und Algorithmen Vorlesung 5: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

Einführung in die Informatik I

Einführung in die Informatik I Einführung in die Informatik I Berechenbarkeit und Komplexität Prof. Dr. Nikolaus Wulff Berechenbarkeit Im Rahmen der Turingmaschine fiel zum ersten Mal der Begriff Berechenbarkeit. Ein Funktion f heißt

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2013/14 1. Vorlesung Kapitel 1: Sortieren Prof. Dr. Alexander Wolff Lehrstuhl für Informatik I Das Problem Eingabe Gegeben: eine Folge A = a 1, a 2,..., a

Mehr

Teil III: Evaluationstest

Teil III: Evaluationstest Teil III: Evaluationstest Inhalt 1 Evaluationstest Teil 1: Fachwissen (inkl. Musterlösung)... 2 1.1 Rahmenbedingungen und Aufgaben... 2 1.2 Lösungsvorschläge zu den Aufgaben... 3 1.3 Verteilung der Punkte...

Mehr

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung

Kapitel 2: Analyse der Laufzeit von Algorithmen Gliederung Gliederung 1. Motivation / Einordnung / Grundlagen 2. Analyse der Laufzeit von Algorithmen 3. Untere Schranken für algorithmische Probleme 4. Sortier- und Selektionsverfahren 5. Paradigmen des Algorithmenentwurfs

Mehr

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

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). 8. Untere Schranken für Sortieren Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)). Werden nun gemeinsame Eigenschaften dieser Algorithmen untersuchen. Fassen gemeinsame

Mehr

Übungen zu Programmierung I - Blatt 8

Übungen zu Programmierung I - Blatt 8 Dr. G. Zachmann A. Greß Universität Bonn Institut für Informatik II 1. Dezember 2004 Wintersemester 2004/2005 Übungen zu Programmierung I - Blatt 8 Abgabe am Mittwoch, dem 15.12.2004, 15:00 Uhr per E-Mail

Mehr

Effizienz von Algorithmen

Effizienz von Algorithmen Effizienz von Algorithmen Eine Einführung Michael Klauser LMU 30. Oktober 2012 Michael Klauser (LMU) Effizienz von Algorithmen 30. Oktober 2012 1 / 39 Ein einführendes Beispiel Wie würdet ihr einen Stapel

Mehr

Termine für Übungstests. Kap. 3 Sortieren HeapSort ff Priority Queues. Motivation. Überblick. Analyse SiftDown

Termine für Übungstests. Kap. 3 Sortieren HeapSort ff Priority Queues. Motivation. Überblick. Analyse SiftDown Kap. Sortieren..5 HeapSort ff..6 Priority Queues Professor Dr. Vorlesung am Do 7.5. entfällt wegen FVV um Uhr Lehrstuhl für Algorithm Engineering, LS Fakultät für nformatik, TU Dortmund 7. VO DAP SS 009

Mehr

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Uebersicht Administratives Einleitung Ein einführendes Beispiel Matthias Zwicker Universität Bern Frühling 2010 2 Administratives Dozent Prof. Zwicker, zwicker@iam.unibe.ch

Mehr

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum:

Student: Alexander Carls Matrikelnummer: Aufgabe: Beschreibung des euklidischen Algorithmus Datum: Berufsakademie Stuttgart / Außenstelle Horb Studienbereich Technik Studiengang Informationstechnik Kurs IT2006, 2.Semester Dozent: Olaf Herden Student: Alexander Carls Matrikelnummer: 166270 Aufgabe: Beschreibung

Mehr

2. Felder (Arrays) 2.1 Suchen in Feldern. lineares Suchen: siehe Kapitel 1. Binäres Suchen. Vor.: Elemente (z.b. aufsteigend) sortiert

2. Felder (Arrays) 2.1 Suchen in Feldern. lineares Suchen: siehe Kapitel 1. Binäres Suchen. Vor.: Elemente (z.b. aufsteigend) sortiert 10 2.1 Suchen in Feldern 2. Felder (Arrays) lineares Suchen: siehe Kapitel 1 Binäres Suchen Vor.: Elemente (z.b. aufsteigend) sortiert ( später) Idee: Divide & Conquer (teile und herrsche) public

Mehr

Algorithmen & Datenstrukturen 1. Klausur

Algorithmen & Datenstrukturen 1. Klausur Algorithmen & Datenstrukturen 1. Klausur 7. Juli 2010 Name Matrikelnummer Aufgabe mögliche Punkte erreichte Punkte 1 35 2 30 3 30 4 15 5 40 6 30 Gesamt 180 1 Seite 2 von 14 Aufgabe 1) Programm Analyse

Mehr

Ausgewählte Algorithmen: Sortieren von Listen

Ausgewählte Algorithmen: Sortieren von Listen Kapitel 11: Ausgewählte Algorithmen: Sortieren von Listen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Analyse von Algorithmen: Zeitkomplexität Elementare Sortierverfahren

Mehr

Klausur Datenstrukturen und Algorithmen SoSe 2012

Klausur Datenstrukturen und Algorithmen SoSe 2012 Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Jonathan Heinen, Thomas Ströder, Sabrina von Styp Klausur Datenstrukturen und Algorithmen SoSe 2012 Vorname: Nachname: Studiengang (bitte genau einen

Mehr

Überblick. Lineares Suchen

Überblick. Lineares Suchen Komplexität Was ist das? Die Komplexität eines Algorithmus sei hierbei die Abschätzung des Aufwandes seiner Realisierung bzw. Berechnung auf einem Computer. Sie wird daher auch rechnerische Komplexität

Mehr

Bäume, Suchbäume und Hash-Tabellen

Bäume, Suchbäume und Hash-Tabellen Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche

Mehr

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

Abgabe: (vor der Vorlesung) Aufgabe 2.1 (P) O-Notation Beweisen Sie die folgenden Aussagen für positive Funktionen f und g: TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen SS 2009 Grundlagen: Algorithmen und Datenstrukturen Übungsblatt 2 Prof. Dr. Helmut Seidl, S. Pott,

Mehr

Sortieralgorithmen. Vorlesung Algorithmen und Datenstrukturen 2. Prof. Dr. W. P. Kowalk Universität Oldenburg

Sortieralgorithmen. Vorlesung Algorithmen und Datenstrukturen 2. Prof. Dr. W. P. Kowalk Universität Oldenburg Sortieralgorithmen Vorlesung Algorithmen und Datenstrukturen 2 im SS 2004 Prof. Dr. W. P. Kowalk Universität Oldenburg Literatur Die folgenden Bücher wurden für die Vorlesung verwendet. Darüber hinaus

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Dynamische Programmierung Einführung Ablaufkoordination von Montagebändern Längste gemeinsame Teilsequenz Optimale

Mehr

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration

Algorithmen & Programmierung. Steuerstrukturen im Detail Selektion und Iteration Algorithmen & Programmierung Steuerstrukturen im Detail Selektion und Iteration Selektion Selektion Vollständige einfache Selektion Wir kennen schon eine Möglichkeit, Selektionen in C zu formulieren: if

Mehr

Kapitel 9 Suchalgorithmen

Kapitel 9 Suchalgorithmen Kapitel 9 Suchalgorithmen Suchverfahren: Verfahren, das in einem Suchraum nach Mustern oder Objekten mit bestimmten Eigenschaften sucht. Vielfältige Anwendungsbereiche für Suchverfahren: u.a. Suchen in

Mehr

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:...

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Studiengang Bachelor of Computer Science Modulprüfung Praktische Informatik 1 Wintersemester 2010 / 2011 Name:... Vorname:... Matrikel-Nr.:... Unterschrift:... Hinweise: 1.) Schreiben Sie Ihren Namen und

Mehr

Sortieren Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 1

Sortieren Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 1 Sortieren 2009 Jiri Spale, Algorithmen und Datenstrukturen - Sortieren 1 Sortiermethoden (Auswahl) Allgemeine Methoden: Sortieren in Arrays Spezielle Methoden: Sortieren von Dateien 2009 Jiri Spale, Algorithmen

Mehr

Komplexität von Algorithmen

Komplexität von Algorithmen Komplexität von Algorithmen Prof. Dr. Christian Böhm WS 07/08 in Zusammenarbeit mit Gefei Zhang http://www.dbs.informatik.uni-muenchen.de/lehre/nfinfosw Ressourcenbedarf - Größenordnungen Prozesse verbrauchen

Mehr

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle

Kapitel 9 Algorithm. Geometrie. Kürzeste Abstände Konvexe Hülle Kapitel 9 Algorithm. Geometrie Kürzeste Abstände Konvexe Hülle Überblick Teilgebiet der Informatik, in dem es um die Entwicklung effizienter Algorithmen und die Bestimmung der algorithmischen Komplexität

Mehr

Programmiertechnik II

Programmiertechnik II 2007 Martin v. Löwis Priority Queues and Heapsort 2007 Martin v. Löwis 2 Priority Queue Abstrakter Datentyp Inhalt: Elemente mit Priorität Operationen: Einfügen: Angabe des Elements und seiner Priorität

Mehr

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14

Datenstrukturen & Algorithmen Lösungen zu Blatt 6 FS 14 Eidgenössische Technische Hochschule Zürich Ecole polytechnique fédérale de Zurich Politecnico federale di Zurigo Federal Institute of Technology at Zurich Institut für Theoretische Informatik 2. April

Mehr

Laufzeit und Komplexität

Laufzeit und Komplexität Laufzeit und Komplexität Laufzeit eines Algorithmus Benchmarking versus Analyse Abstraktion Rechenzeit, Anzahl Schritte Bester, Mittlerer, Schlechtester Fall Beispiel: Lineare Suche Komplexitätsklassen

Mehr

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen

3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen 3.2. Korrektheit und Komplexität am Beispiel: Sortieren Sortieren ist eine wichtige Basis-Operation für komplexe Algorithmen Sortierproblem Eingabe: Folge von n natürlichen Zahlen a 1, a 2,, a n, die Folge

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Einführung in die Informatik 2 Suchen in Datenmengen Sven Kosub AG Algorithmik/Theorie komplexer Systeme Universität Konstanz E 202 Sven.Kosub@uni-konstanz.de Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v.

Mehr

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang

12 (2-4)-Bäume Implementierbare Funktionen. (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 12 (2-4)-Bäume (2-4)-Bäume sind durch folgende Eigenschaften deniert: 1. Alle Äste sind gleich lang 2. Die Ordnung (maximale Anzahl der Söhne eines Knotens) ist gleich 4 3. Innere Knoten haben 2 Söhne

Mehr

Programmierung mit Feldern OOPM, Ralf Lämmel

Programmierung mit Feldern OOPM, Ralf Lämmel Übung: Deklarieren Sie ein entsprechendes Feld in Java! Programmierung mit Feldern OOPM, Ralf Lämmel Einführendes Beispiel Eingabe: ein Feld von int-werten public static int sum(int[] a) { int result =

Mehr

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte

Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Klausur C-Programmierung / 15.02.2014 / Klingebiel / 60 Minuten / 60 Punkte Musterlösung 1. Aufgabe (5 Punkte) Im folgenden Programmcode sind einige Fehler enthalten. Finden und markieren Sie mindestens

Mehr

11. Rekursion, Komplexität von Algorithmen

11. Rekursion, Komplexität von Algorithmen 11. Rekursion, Komplexität von Algorithmen Teil 2 Java-Beispiele: Power1.java Hanoi.java K. Bothe, Institut für Informatik, HU Berlin, GdP, WS 2015/16 Version: 23. Nov. 2015 Anwendung der Rekursion Rekursiv

Mehr

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v) Ein Baum T mit Knotengraden 2, dessen Knoten Schlüssel aus einer total geordneten Menge speichern, ist ein binärer Suchbaum (BST), wenn für jeden inneren Knoten v von T die Suchbaumeigenschaft gilt: Der

Mehr

Programmiertechnik II

Programmiertechnik II Analyse von Algorithmen Algorithmenentwurf Algorithmen sind oft Teil einer größeren Anwendung operieren auf Daten der Anwendung, sollen aber unabhängig von konkreten Typen sein Darstellung der Algorithmen

Mehr

Informatik I 4. Kapitel Suchen in sequentiellen Listen

Informatik I 4. Kapitel Suchen in sequentiellen Listen Informatik I 4. Kapitel Rainer Schrader Zentrum für Angewandte Informatik Köln 21. Mai 2008 1 / 55 2 / 55 Szenario Suchen in Daten gehört zu den wichtigsten Operationen etwa Suchen nach: Stichworten in

Mehr

Dynamisches Huffman-Verfahren

Dynamisches Huffman-Verfahren Dynamisches Huffman-Verfahren - Adaptive Huffman Coding - von Michael Brückner 1. Einleitung 2. Der Huffman-Algorithmus 3. Übergang zu einem dynamischen Verfahren 4. Der FGK-Algorithmus 5. Überblick über

Mehr

12. Rekursion Grundlagen der Programmierung 1 (Java)

12. Rekursion Grundlagen der Programmierung 1 (Java) 12. Rekursion Grundlagen der Programmierung 1 (Java) Fachhochschule Darmstadt Haardtring 100 D-64295 Darmstadt Prof. Dr. Bernhard Humm FH Darmstadt, 24. Januar 2006 Einordnung im Kontext der Vorlesung

Mehr

Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen Technische Universität Braunschweig Sommersemester 2013 IBR - Abteilung Algorithmik Prof. Dr. Sándor Fekete Dr. Christiane Schmidt Stephan Friedrichs Klausur Algorithmen und Datenstrukturen 22.08.2013

Mehr

Vorlesung Informatik 1

Vorlesung Informatik 1 Vorlesung Informatik 1 Fachhochschule für Technik Esslingen Studiengang Wirtschaftsinformatik Algorithmen Dr. rer. nat. Andreas Rau http://www.hs-esslingen.de/~rau andreas.rau@hs-esslingen.de In diesem

Mehr

Algorithmen und Datenstrukturen 1-1. Seminar -

Algorithmen und Datenstrukturen 1-1. Seminar - Algorithmen und Datenstrukturen 1-1. Seminar - Dominic Rose Bioinformatics Group, University of Leipzig Wintersemester 2009/10 Inhalt der ersten beiden Vorlesungen Algorithmenbegriff Komplexität, Asymptotik

Mehr

Kostenmaße. F3 03/04 p.188/395

Kostenmaße. F3 03/04 p.188/395 Kostenmaße Bei der TM nur ein Kostenmaß: Ein Schritt (Konfigurationsübergang) kostet eine Zeiteinheit; eine Bandzelle kostet eine Platzeinheit. Bei der RAM zwei Kostenmaße: uniformes Kostenmaß: (wie oben);

Mehr

Vorname:... Matrikel-Nr.:... Unterschrift:...

Vorname:... Matrikel-Nr.:... Unterschrift:... Fachhochschule Mannheim Hochschule für Technik und Gestaltung Fachbereich Informatik Studiengang Bachelor of Computer Science Algorithmen und Datenstrukturen Wintersemester 2003 / 2004 Name:... Vorname:...

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Freitag, 05. Mai 2006: keine Vorlesung! aber Praktikum von 08.00 11.30 Uhr (Gruppen E, F, G, H; Vortestat für Prototyp)

Mehr

Grundlagen der Programmierung

Grundlagen der Programmierung Grundlagen der Programmierung Algorithmen und Datenstrukturen Die Inhalte der Vorlesung wurden primär auf Basis der angegebenen Literatur erstellt. Darüber hinaus sind viele Teile direkt aus der Vorlesung

Mehr

Schulinternes Curriculum im Fach Informatik

Schulinternes Curriculum im Fach Informatik Schulinternes Curriculum im Fach Informatik Unterricht in EF : 1. Geschichte der elektronischen Datenverarbeitung (3 Stunden) 2. Einführung in die Nutzung von Informatiksystemen und in grundlegende Begriffe

Mehr

11.1 Grundlagen - Denitionen

11.1 Grundlagen - Denitionen 11 Binärbäume 11.1 Grundlagen - Denitionen Denition: Ein Baum ist eine Menge, die durch eine sog. Nachfolgerrelation strukturiert ist. In einem Baum gilt: (I) (II) 1 Knoten w ohne VATER(w), das ist die

Mehr

Randomisierte Algorithmen 2. Erste Beispiele

Randomisierte Algorithmen 2. Erste Beispiele Randomisierte Algorithmen Randomisierte Algorithmen 2. Erste Beispiele Thomas Worsch Fakultät für Informatik Karlsruher Institut für Technologie Wintersemester 2016/2017 1 / 35 Randomisierter Identitätstest

Mehr

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder Programmieren in PASCAL Bäume 1 1. Baumstrukturen Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder 1. die leere Struktur oder 2. ein Knoten vom Typ Element

Mehr

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Sortieren durch Einfügen Prof. Dr. W. Kowalk Sortieren durch Einfügen 1 Schon wieder aufräumen Schon wieder Aufräumen, dabei habe ich doch erst neulich man findet alles schneller wieder Bücher auf Regal

Mehr

Rekursive Funktionen

Rekursive Funktionen Um Rekursion zu verstehen, muss man vor allem Rekursion verstehen. http://www2.norwalk-city.k12.oh.us/wordpress/precalc/files/2009/05/mona-lisa-jmc.jpg Rekursive Funktionen OOPM, Ralf Lämmel Was ist Rekursion?

Mehr

Informatik I 1. Kapitel. Einführung in Algorithmen und Datenstrukturen. Einführung in Algorithmen. Einführung in Algorithmen.

Informatik I 1. Kapitel. Einführung in Algorithmen und Datenstrukturen. Einführung in Algorithmen. Einführung in Algorithmen. Informatik I 1. Kapitel Rainer Schrader Einführung in Algorithmen und Datenstrukturen Zentrum für Angewandte Informatik Köln 16. Juli 008 1 / 1 / 1 Einführung in Algorithmen Einführung in Algorithmen Gliederung

Mehr

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1

Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 Übungsaufgaben: 1. Objektorientierte Programmierung - Teil 1 1. Das Objekt Bruch mit einem Standardkonstruktor (initialisieren mit 0), einem allgemeinen Konstruktor (Zähler und Nenner können beliebig vorgegeben

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier

Algorithmen und Datenstrukturen SoSe 2008 in Trier. Henning Fernau Universität Trier Algorithmen und Datenstrukturen SoSe 2008 in Trier Henning Fernau Universität Trier fernau@uni-trier.de 1 Algorithmen und Datenstrukturen Gesamtübersicht Organisatorisches / Einführung Grundlagen: RAM,

Mehr