Vorlesung Datenstrukturen
|
|
- Adam Melsbach
- vor 6 Jahren
- Abrufe
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 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
MehrJAVA - 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)
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
MehrGrundlegende 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.
MehrGrundlagen 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
MehrGrundlagen 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
MehrProgrammieren 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
MehrVorlesung 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 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
Mehr2 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
MehrSortierverfahren 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
MehrKapitel 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:
MehrKapitel 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:
MehrAlgorithmen 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
MehrAbschnitt: 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
MehrDatenstrukturen 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
MehrDatenstrukturen 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:
MehrSuchen 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
MehrSortieralgorithmen. 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
MehrSortierverfahren. 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
Mehr10. 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
MehrEinfü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
MehrEinfü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
MehrEinstieg 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
MehrSortieralgorithmen. 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
MehrAlgorithmen & 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
MehrVom 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
MehrPro 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:
Mehrdamit 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 >
MehrAlgorithmen 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!
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
MehrProf. 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
Mehr1. 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
MehrAsymptotische 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
MehrBUBBLE 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
Mehr2.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
MehrFolge 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
MehrProgrammieren 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
MehrIdeen 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?
MehrAlgorithmen 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
MehrTechnische 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
Mehr1. 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: (K4) Joost-Pieter Katoen Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://www-i2.informatik.rwth-aachen.de/i2/dsal12/ 20.
Mehr3.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)
MehrEinfü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
MehrAlgorithmen 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
MehrTeil 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...
MehrKapitel 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
MehrAlle 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
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
MehrEffizienz 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
MehrTermine 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
MehrUebersicht. 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
MehrStudent: 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
Mehr2. 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
MehrAlgorithmen & 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
MehrAusgewä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
MehrKlausur 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
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
MehrBä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
MehrAbgabe: (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,
MehrSortieralgorithmen. 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
MehrDatenstrukturen & 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
MehrAlgorithmen & 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
MehrKapitel 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
MehrName:... 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
MehrSortieren 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
MehrKomplexitä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
MehrKapitel 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
MehrProgrammiertechnik 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
MehrDatenstrukturen & 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
MehrLaufzeit 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
Mehr3.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
MehrEinfü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.
Mehr12 (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
MehrProgrammierung 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 =
MehrKlausur 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
Mehr11. 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
MehrDer 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
MehrProgrammiertechnik 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
MehrInformatik 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
MehrDynamisches 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
Mehr12. 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
MehrKlausur 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
MehrVorlesung 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
MehrAlgorithmen 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
MehrKostenmaß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);
MehrVorname:... 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:...
MehrAlgorithmen 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)
MehrGrundlagen 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
MehrSchulinternes 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
Mehr11.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
MehrRandomisierte 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
MehrEine 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
MehrSortieren 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
MehrRekursive 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?
MehrInformatik 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 1. Das Objekt Bruch mit einem Standardkonstruktor (initialisieren mit 0), einem allgemeinen Konstruktor (Zähler und Nenner können beliebig vorgegeben
MehrDatenstrukturen & 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
MehrAlgorithmen 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