Algorithmen und Datenstrukturen
|
|
|
- Reiner Sommer
- vor 6 Jahren
- Abrufe
Transkript
1 Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens 1 Organisatorisches Am Freitag, 9. Juni 2006, erfolgt in der Vorlesung eine Zusammenfassung der Vorlesungsinhalte als Vorbereitung auf die Klausur. besteht für Sie nochmal die Möglichkeit Fragen zu bestimmten Inhalten zu stellen. 2 1
2 Organisatorisches Am Freitag, 16. Juni 2006, findet keine VL statt, dafür ca Uhr Präsentation Gruppe A bis D Raum S ca Uhr Präsentation Gruppe E bis F Raum S Quick Sort Eine weitere empfehlenswerte Internet-Seite mit Erläuterungen zu verschiedenen Sortieralgorithmen 4 2
3 Überblick Grundlagen Suchalgorithmen Sortieralgorithmen Analyse von Algorithmen 5 Analyse Warum analysiert man Algorithmen? Was muß bei Algorithmen analysiert werden? 6 3
4 Analyse Durch die Analyse will man den besten Algorithmus für ein gegebenes Problem ermitteln. Die Auswahl des besten Algorithmus kann sparen helfen: Zeit Ressourcen Geld 7 Analyse Was tatsächlich analysiert werden muß, hängt davon ab, was der Algorithmus tut. 8 4
5 Analyse Analyse der Sortieralgorithmen Selection Sort Insertion Sort Bubble Sort Quick Sort Was muß verglichen werden, um den besten Sortieralgorithmus zu finden? 9 Vergleich Vergleich von Laufzeit und/oder Speicherplatzbedarf in Abhängigkeit von der Größe der Eingabe Best-case-Analyse (Bester Fall) Average-case-Analyse (Mittel) Worst-case-Analyse (schlechtester Fall) 10 5
6 Laufzeit Wovon hängt die Laufzeit eines Sortieralgorithmus ab? 11 Laufzeit Die Laufzeit eines Sortieralgorithmus ist abhängig von: Anzahl der zu sortierenden Elemente Anzahl der Vergleiche Anzahl der Bewegungen eines Datensatzes 12 6
7 Speicherplatzbedarf Kann ein Sortieralgorithmus einen hohen (oder niedrigen) Speicherplatzbedarf haben? 13 Ordnung O Die Ordnung eines Algorithmus ist ein wichtiges Kriterium zur Bewertung seiner Effizienz. Sie gibt an, wie sich die Laufzeit und/oder der zusätzlich zu den vorhandenen Daten benötigte Speicherplatzbedarf in Abhängigkeit von der Länge der Eingabe vergrößern. 14 7
8 Ordnung O Man sagt: Die Laufzeit T(N) eines Algorithmus in Abhängigkeit von der Problemgröße N ist O(N). von der Größenordnung N. O(N) nennt man die Groß-O-Notation 15 Ordnung O Meist interessiert man sich jedoch nicht für den genauen Verlauf von T(N), sondern nur für dessen Größenordnung, und das auch nur für ''asymptotisch'', also für große N. Auch geht es in der Regel nur um eine obere Grenze für das Wachstum von T(N) mit wachsendem N. Je stärker T(N) mit N anwächst, umso größer ist die Komplexität des Algorithmus. 16 8
9 Ordnung O O( 1 ) : konstante Ordnung O( N ) : linear wachsende Ordnung O( log N ): logarithmisch wachsende Ordnung O( N 2 ) : quadratisch wachsende Ordnung O( 2 N ) : exponentiell wachende Ordnung 17 Selection Sort void selection_sort(int array[], int n) { int i, j, t, min; for( i=0; i<n-1; i++ ) { min = i; for( j=i+1; j<n; j++ ) { if( array[j] < array[min] ) min = j; t = array[min]; array[min] = array[i]; array[i] = t; return; Vergleiche? Datensatzbewegungen? Speicherplatzbedarf? 18 9
10 Selection Sort Analyse ergibt: ½ (n 2 n) Vergleiche und 3 (n 1) Datensatzbewegungen Zeitverhalten O( n 2 ) bei Vergleichen Zeitverhalten O(n) bei Datensatzbewegungen 19 Selection Sort Zeitverhalten im Best Case? Average Case? Worst Case? 20 10
11 Selection Sort Auch wenn der Algorithmus auf ein bereits sortiertes Array angewendet wird, ändert sich das Zeitverhalten nicht. Das Zeitverhalten im worst case, average case und best case ist unabhängig von den Eingabedaten. Es unterscheidet sich in allen drei Fällen nicht. 21 Selection Sort Wie ändert sich der Speicherplatzbedarf, wenn sich n ändert? 22 11
12 Insertion Sort void insertion_sort(int elem[], int n) { int key; int i, j; for( j=1; j<n; j++ ) { key = elem[j]; i = j-1; while( i>=0 && elem[i]>key ) { elem[i+1] = elem[i]; i--; // while elem[i+1] = key; // for return; 23 Insertion Sort Kann man sich Voraussetzungen bezüglich der Eingabedaten vorstellen, bei denen der Algorithmus besonders schnell / langsam läuft? 24 12
13 Insertion Sort Im schlechtesten Fall wird der Platz für das einzufügende Element immer erst ganz am Anfang des sortierten Teils gefunden. Dieser Fall tritt ein, wenn die Folge zu Anfang in absteigender Reihenfolge sortiert ist. In der While-Schleife werden dann Folgen der Länge 1, 2, 3,..., n-1 durchsucht. Zeitkomplexität O( n 2 ) 25 Insertion Sort Im besten Fall ist das Array bereits aufsteigend sortiert. In die while-schleife wird dann nie gesprungen, da die Bedingung elem[i]>key immer falsch ist. Zeitkomplexität O( n ) 26 13
14 Insertion Sort Wie ändert sich der Speicherplatzbedarf, wenn sich n ändert? 27 Bubble Sort void bubble_sort(int array[], int n) { int i, zw, ok; do { ok = 1; for (i=0; i<n-1; i++) { if (array[i] > array[i + 1]) { zw = array[i]; array[i] = array[i+1]; array[i+1] = zw; ok = 0; // if // for while (!ok); return; 28 14
15 Bubble Sort Im besten Fall ist die Folge bereits richtig sortiert. Dann sind keine Datenbewegungen nötig. Die for-schleife wird nur einmal von 0 bis n-2 durchlaufen, also (n-1)-mal Zeitkomplexität O( n ) 29 Bubble Sort Im schlechtesten Fall ist die Folge beim Aufruf von Bubble Sort absteigend sortiert. Dann sind sehr viele Datenbewegungen nötig: n-1 Vertauschungen für das erste Element n-2 Vertauschungen für das zweite Element n-3 Vertauschungen für das dritte Elemenet usw. Ebensoviele Vergleiche sind nötig. Zeitkomplexität O(n 2 ) 30 15
16 Bubble Sort Wie ändert sich der Speicherplatzbedarf, wenn sich n ändert? 31 Quick Sort void quick_sort(int array[], int left, int right) { int p; if( right>left ) { p = partition(array, left, right); quick_sort(array, left, p-1); quick_sort(array, p+1, right); return; 32 16
17 Quick Sort int partition(int array[], int left, int right) { int i, j, t, key; key = array[left]; i=left+1; j=right; for(;;) { while( array[i] <= key && i<right ) i++; while( array[j] >= key && j>left ) j--; if( i>=j ) break; t = array[i]; array[i] = array[j]; array[j] = t; // for t = array[j]; array[j] = array[left]; array[left] = t; return j; 33 Quick Sort Der Algorithmus verläuft optimal, wenn jeder Aufteilungsschritt im Verlauf der Rekursion jeweils etwa gleichlange Teilstücke erzeugt. In diesem günstigsten Fall beträgt die Rekursionstiefe log(n) und in jeder Schicht sind n Elemente zu behandeln. Zeitkomplexität O( n * log n ) (best case) 34 17
18 Quick Sort Der ungünstigste Fall tritt ein, wenn ein Teilstück stets nur aus einem Element und das andere aus den restlichen Elementen besteht. Die Rekursionstiefe ist dann n-1. Zeitkomplexität O( n 2 ) (worst case) 35 Quick Sort In unserer Implementierung von Quick Sort wird in der Funktion partition() immer das erste Element als Vergleichswert gewählt. Der ungünstigste Fall tritt dann ein, wenn die Folge beim Aufruf von Quick Sort bereits absteigend sortiert ist. Würde man in der Funktion partition() das letzte Element als Vergleichswert wählen, dann tritt der ungünstigste Fall ein, wenn die Folge beim Aufruf aufsteigend sortiert ist
19 Quick Sort Viele praktische Tests und Analysen haben ergeben, dass Quick Sort eine durchschnittliche Laufzeit proportional zu besitzt. n * log n 37 Quick Sort Wie ändert sich der Speicherplatzbedarf, wenn sich n ändert? 38 19
20 Fazit Quick Sort ist in der Praxis das schnellste Sortierverfahren. Es gibt allerdings andere Verfahren, die einfacher zu implementieren sind. Quick Sort ist sehr anfällig bezüglich Programmierfehlern. Quick Sort ist nicht stabil, d.h. die relative Sortiertheit des Arrays bleibt nicht erhalten. (Bei gleichen Elementen tauschen diese die Reihenfolge im Array) 39 Fazit Selection Sort eignet sich z.b. für Datensätze mit kleinem Schlüssel aber umfangreichem und kompliziert strukturierten Datenteil, da hier nur sehr wenige Datenbewegungen erfolgen
21
22 43 Verbesserungen für Quicksort Im Laufe der Jahre erschienen immer wieder Verbesserungsvorschläge für Quicksort. Meist war es jedoch so, dass Verbesserungen in einem Teil des Algorithmus zu Verschlechterungen der Laufzeit in anderen Teilen führten
23 Verbesserungen für Quicksort Zwei Verbesserungen haben sich in der Praxis gut bewährt das Finden eines besseren Trennelements mit der Methode median-of-three die Behandlung kleiner Teildateien mit Insertion Sort (Quick Sort feat. Insertion) 45 median-of-three Erinnerung: Ungünstigster Fall, wenn Datenmenge absteigend sortiert ist, wobei immer das linke (erste) Element gewählt wird Frage: Welches Element müßte gewählt werden, damit aus diesem Worst Case der Best Case wird? 46 23
24 median-of-three Idee: vermeide den ungünstigsten Fall, indem immer ein besseres Element gewählt wird. Nehme drei Elemente aus dem Feld und wähle das (wertmäßig) mittlere von ihnen. Welche drei Elemente soll man nehmen? 47 median-of-three Welche drei Elemente soll man nehmen? Zufallsgenerator zur Auswahl der drei Elemente übertrieben einfache Lösung: nehme das erste, das mittlere und das letzte Element 48 24
25 median-of-three int middle = left + (right - left) / 2; if (array[right] > array[middle]) { tmp = array[right]; array[right] = array[middle]; array[middle] = tmp; if (array[right] > array[left]) { tmp = array[right]; array[right] = array[left]; array[left] = tmp; else if(array[left] > array[middle]) { tmp = array[left]; array[left] = array[middle]; array[middle] = tmp; 49 median-of-three Wofür sorgt der Quellcode auf der vorangegangenen Folie? An welche Stelle in unseren bisherigen Quick Sort Algorithmus muss der Quellcode von der vorangegangenen Folie eingefügt werden? 50 25
26 median-of-three In der Praxis wird die Chance, eines der mittleren Elemente zu treffen deutlich erhöht und somit erhöht sich natürlich auch die Wahrscheinlichkeit, dass ein Feld in zwei etwa gleich große Teilfelder zerlegt wird. Im Allgemeinen kann man von einer Geschwindigkeitssteigerung von 5% und (eher) mehr ausgehen. 51 Quick Sort feat. Insertion Wenn man sich den klassischen Quicksort anschaut, so stellt man fest, dass die Zerlegung (die rekursiven Funktionsaufrufe) für viele kleine Teilfelder bis hin zur Feldgröße 1 stattfindet
27 Quick Sort feat. Insertion Um an Geschwindigkeit zu gewinnen, muss eine Möglichkeit gefunden werden, Quicksort für kleine Teilfelder schneller ablaufen zu lassen. 53 Quick Sort feat. Insertion Eine Möglichkeit, die oft angewandt wird, besteht darin, Insertion Sort auf ein Teilfeld loszulassen, falls die Größe des Feldes unter einen konstanten Schwellwert M sinkt
28 void qsort_ins(int array[], int left, int right){ int i, j, tmp; if(right-left > M){ //Quicksort i=left-1; j=right; for(;;){ while(array[++i]<array[right]); while(array[--j]>array[right] && j>i); if(i>=j) break; tmp=array[i]; array[i]=array[j]; array[j]=tmp; tmp=array[i]; array[i]=array[right]; array[right]=tmp; qsort_ins(array, left, i-1); qsort_ins(array, i+1, right); else{ //insertion sort for(i=left+1; i<=right; ++i){ tmp=array[i]; for(j=i-1; j>=left && tmp<array[j]; --j) { array[j+1]=array[j]; array[j+1]=tmp; Quick Sort feat. Insertion Wenn die Bedingung if(right-left > M) nicht mehr erfüllt ist dann ist das Teilfeld "zu klein" für Quicksort dann wird für das behandelte Teilfeld Insertion Sort aufgerufen ansonsten findet weiterhin das klassische Quicksort Anwendung
29 Quick Sort feat. Insertion Was bringt's? Mit dieser Methode lassen sich viele rekursive Aufrufe sparen. In Abhängigkeit von M kann man Laufzeitverbesserungen von 20% und mehr beobachten. 57 Quick Sort feat. Insertion Optimale Wahl von M Bleibt noch die Frage offen, wie groß man den Schwellwert M festlegen sollte. Das folgende Diagramm zeigt die Laufzeit bei N=10 Mio. bis N=60 Mio. Elementen in Abhängigkeit von M=0 bis M=100: 58 29
30 Quick Sort feat. Insertion 59 Quick Sort feat. Insertion Diagramm zeigt M scheint unabhängig von N zu sein beste Ergebnisse ca. bei M=25 Diesen Wert sollte man auch für M wählen, um die Verbesserung mit Insertion Sort optimal wirken zu lassen
31 Algorithmen und Datenstrukturen Ende 61 31
Interne Sortierverfahren
Angewandte Datentechnik Interne Sortierverfahren Interne Sortierverfahren Ausarbeitung einer Maturafrage aus dem Fach A n g e w a n d t e D a t e n t e c h n i k Andreas Hechenblaickner 5CDH HTBLA Kaindorf/Sulm
Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen
Kapitel 10 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:
Sortieralgorithmen. Selection Sort
intuitivster Suchalgorithmus Sortieralgorithmen Selection Sort In jedem Schritt wird das kleinste Element im noch unsortierten Array gesucht und ans Ende des bisher sortierten Teilarrays gehangen 3 1 4
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:
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:
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
Ziele. Kapitel 10: Komplexität von Algorithmen und Sortierverfahren. Beispiel: Lineare Suche eines Elements in einem Array (1)
Einführung in die Informatik: Programmierung und Softwareentwicklung Wintersemester 2018/19 Ziele Kapitel 10: Komplexität von Algorithmen und Sortierverfahren Prof. Dr. David Sabel Lehr- und Forschungseinheit
Abschnitt 19: Sortierverfahren
Abschnitt 19: Sortierverfahren 19. Sortierverfahren 19.1 Allgemeines 19.2 Einfache Sortierverfahren 19.3 Effizientes Sortieren: Quicksort 19.4 Zusammenfassung 19 Sortierverfahren Informatik 2 (SS 07) 758
6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.
Algorithmen und Datenstrukturen 132 6 Quicksort In diesem Abschnitt wird Quicksort, ein weiterer Sortieralgorithmus, vorgestellt. Trotz einer eher langsamen Worst-Case Laufzeit von Θ(n 2 ) ist Quicksort
Grundlagen: Algorithmen und Datenstrukturen
Grundlagen: Algorithmen und Datenstrukturen Prof. Dr. Hanjo Täubig Lehrstuhl für Effiziente Algorithmen (Prof. Dr. Ernst W. Mayr) Institut für Informatik Technische Universität München Sommersemester 2010
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
Grundlegende Sortieralgorithmen
Grundlegende Sortieralgorithmen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Grundlegende Sortieralgorithmen auf Reihungen kennen
QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert
4.3.6 QuickSort QuickSort ist ein Sortieralgorithmus, der auf der Idee des Teile & Beherrsche beruht, und das gegebene Array an Ort und Stelle (in place) sortiert QuickSort teilt das gegebene Array anhand
3.2. Divide-and-Conquer-Methoden
LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE 3.2. Divide-and-Conquer-Methoden Divide-and-Conquer-Methoden Einfache Sortieralgorithmen reduzieren die Größe des noch
Grundlegende Sortieralgorithmen
Grundlegende Sortieralgorithmen Martin Wirsing in Zusammenarbeit mit Michael Barth, Philipp Meier und Gefei Zhang 01/05 2 Ziele Grundlegende Sortieralgorithmen auf Reihungen kennen lernen 3 Klassifizierung
Elementare Sortierverfahren
Algorithmen und Datenstrukturen I Elementare Sortierverfahren Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Sortieren.......................................
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.
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Vorstellen des vierten Übungsblatts 2. Vorbereitende Aufgaben für das vierte Übungsblatt
Tutoraufgabe 1 (Sortieren): Lösung: Datenstrukturen und Algorithmen SS14 Lösung - Übung 4
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Übung F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Sortieren): a) Sortieren Sie das folgende Array durch Anwendung des Selectionsort-Algorithmus.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen A7. Sortieren III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 Untere Schranke Sortierverfahren Sortieren Vergleichsbasierte Verfahren Nicht vergleichsbasierte
Einführung in die Informatik Algorithmen und Datenstrukturen. Thema 17 Sortieren
Einführung in die Informatik Algorithmen und Datenstrukturen Thema 17 Sortieren Sortierproblem Es gibt eine Menge von Datensätzen, und jeder dieser Sätze besitzt einen (möglichst eindeutigen) Schlüssel.
Programmieren in C. Strukturen und Zeiger. Prof. Dr. Nikolaus Wulff
Programmieren in C Strukturen und Zeiger Prof. Dr. Nikolaus Wulff Sortieren Im Praktikum wurde ein Modul zum Sortieren entwickelt. Es enthält verschiedene Sortieralgorithmen, die ausgewählt und erweitert
Übung: Algorithmen und Datenstrukturen SS 2007
Übung: Algorithmen und Datenstrukturen SS 2007 Prof. Lengauer Sven Apel, Michael Claÿen, Christoph Zengler, Christof König Blatt 5 Votierung in der Woche vom 04.06.0708.06.07 Aufgabe 12 Manuelle Sortierung
A3.1 Sortieralgorithmen
Algorithmen und Datenstrukturen 1. März 2018 A3. : Selection- und Insertionsort Algorithmen und Datenstrukturen A3. : Selection- und Insertionsort Marcel Lüthi and Gabriele Röger Universität Basel 1. März
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen A3. Sortieren: Selection- und Insertionsort Marcel Lüthi and Gabriele Röger Universität Basel 1. März 2018 Sortieralgorithmen Inhalt dieser Veranstaltung A&D Sortieren Komplexitätsanalyse
A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.
Algorithmen und Datenstrukturen 14. März 2018 A7. III Algorithmen und Datenstrukturen A7. III Marcel Lüthi and Gabriele Röger Universität Basel 14. März 2018 A7.1 Untere Schranke A7.2 Quicksort A7.3 Heapsort
Aufgabe (Schreibtischtest, Algorithmenanalyse)
Aufgabe (Schreibtischtest, Algorithmenanalyse) Führen Sie einen Schreibtischtest für den Algorithmus Positionsort für das folgende Eingabe-Array durch. Geben Sie nach jedem Durchlauf der for-schleife mit
Ü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
Suchen und Sortieren
Suchen und Sortieren Suchen Sortieren Mischen Zeitmessungen Bewertung von Sortier-Verfahren Seite 1 Suchverfahren Begriffe Suchen = Bestimmen der Position (Adresse) eines Wertes in einer Datenfolge Sequentielles
(08 - Einfache Sortierverfahren)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (08 - Einfache Sortierverfahren) Prof. Dr. Susanne Albers Sortieren Motivation, Einführung Datenbestände müssen sehr oft sortiert werden, etwa um
Tutoraufgabe 1 (Sortieralgorithmus):
Prof. aa Dr. Ir. Joost-Pieter Katoen Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung 4 (Abgabe 2..2) Christian Dehnert, Friedrich Gretz, Benjamin Kaminski, Thomas Ströder Tutoraufgabe (Sortieralgorithmus):
Kapitel 2. Weitere Beispiele Effizienter Algorithmen
Kapitel 2 Weitere Beispiele Effizienter Algorithmen Sequentielle Suche Gegeben: Array a[1..n] Suche in a nach Element x Ohne weitere Zusatzinformationen: Sequentielle Suche a[1] a[2] a[3] Laufzeit: n Schritte
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda: Sortierverfahren 1. Schreibtischtest 2. Stabilität 3. Sortierung spezieller Arrays 4. Untere
Übung zu Algorithmen und Datenstrukturen (für ET/IT)
Übung zu Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Rüdiger Göbl, Mai Bui Computer Aided Medical Procedures Technische Universität München Fibonacci Zahlen Fibonacci Folge Die Fibonacci
14. Sortieren II Heapsort. Heapsort. [Max-]Heap 7. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 14. Sortieren II 14.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 397 398 Heapsort [Max-]Heap 7 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum
Übung Algorithmen und Datenstrukturen
Übung Algorithmen und Datenstrukturen Sommersemester 2016 Patrick Schäfer, Humboldt-Universität zu Berlin Organisation Vorlesung: Montag 11 13 Uhr Marius Kloft RUD 26, 0 115 Mittwoch 11 13 Uhr Marius Kloft
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
Sortieren II / HeapSort Heaps
Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: [email protected] Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 9 Sortieren Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger Straße 69, A-4040 Linz Sortieren :: Problemstellung
Prof. Dr. Margarita Esponda
Algorithmen und Programmieren II Sortieralgorithmen imperativ Teil I Prof. Dr. Margarita Esponda Freie Universität Berlin Sortieralgorithmen Bubble-Sort Insert-Sort Selection-Sort Vergleichsalgorithmen
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
Ü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
Heapsort / 1 A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
Heapsort / 1 Heap: Ein Array heißt Heap, falls A [i] A [2i] und A[i] A [2i + 1] (für 2i n bzw. 2i + 1 n) gilt. Beispiel: A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] Heapsort / 2 Darstellung eines Heaps als
Übung Algorithmen I
Übung Algorithmen I 20.5.15 Christoph Striecks [email protected] (Mit Folien von Julian Arz, Timo Bingmann und Sebastian Schlag.) Roadmap Organisation Mergesort, Quicksort Dual Pivot Quicksort
8. Sortieren II. 8.1 Heapsort. Heapsort. [Max-]Heap 6. Heapsort, Quicksort, Mergesort. Binärer Baum mit folgenden Eigenschaften
Heapsort, Quicksort, Mergesort 8. Sortieren II 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 9 210 Heapsort [Max-]Heap 6 Inspiration von Selectsort: Schnelles Einfügen Binärer Baum mit
Heapsort, Quicksort, Mergesort. 8. Sortieren II
209 Heapsort, Quicksort, Mergesort 8. Sortieren II 210 8.1 Heapsort [Ottman/Widmayer, Kap. 2.3, Cormen et al, Kap. 6] 211 Heapsort Inspiration von Selectsort: Schnelles Einfügen Inspiration von Insertionsort:
Algorithmus Analyse. Johann Basnakowski
Algorithmus Analyse Johann Basnakowski Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg Gliederung Algorithmus
7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
Aufgabe (Schreibtischtest, lexikographische Ordnung)
Aufgabe (Schreibtischtest, lexikographische Ordnung) Führen Sie einen Schreibtischtest für den Algorithmus Bubblesort aus der VL für die folgenden Eingabe-Arrays durch. Geben Sie das Array S nach jedem
Abschnitt 7: Komplexität von imperativen Programmen
Abschnitt 7: Komplexität von imperativen Programmen 7. Komplexität von imperativen Programmen 7 Komplexität von imperativen Programmen Einf. Progr. (WS 08/09) 399 Ressourcenbedarf von Algorithmen Algorithmen
Datenstrukturen. Sortieralgorithmen. am Beispiel Java. c Y. Pfeifer. (Mai 2013)
Datenstrukturen Sortieralgorithmen am Beispiel Java c Y. Pfeifer (Mai 013) 1 Sortieralgorithmen 1.1 Straight Insertion Bei diesem Einfügeverfahren wird eine Zahlenreihe mit n Elementen von links nach rechts
Komplexität von Algorithmen OOPM, Ralf Lämmel
Ganz schön komplex! Komplexität von Algorithmen OOPM, Ralf Lämmel 885 Motivierendes Beispiel Algorithmus Eingabe: ein Zahlen-Feld a der Länge n Ausgabe: Durchschnitt Fragen: sum = 0; i = 0; while (i
1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit ** i=1
Universität Karlsruhe Algorithmentechnik Fakultät für Informatik WS 05/06 ITI Wagner. Musterlösung Problem : Average-case-Laufzeit vs. Worst-case-Laufzeit ** (a) Im schlimmsten Fall werden für jedes Element
Sortieren durch Mischen (Mergesort; John von Neumann 1945)
Sortieren durch Mischen (Mergesort; John von Neumann 1945) Gegeben folgendes Feld der Größe 10. 3 8 9 11 18 1 7 10 22 32 Die beiden "Hälften" sind hier bereits vorsortiert! Wir können das Feld sortieren,
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
Heapsort. Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen / 50
Heapsort Dr. Michael Brinkmeier (TU Ilmenau) Algorithmen und Datenstrukturen 27.6.2007 / 50 Heapsort - Wiederholung Definition Array A[..n] mit Einträgen aus (U,
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer
Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Suchverfahren Autor: Stefan Edelkamp / Sven Schuierer Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg
Datenstrukturen. Mariano Zelke. Sommersemester 2012
Datenstrukturen Mariano Zelke Sommersemester 2012 Mariano Zelke Datenstrukturen 2/19 Das Teilfolgenproblem: Algorithmus A 3 A 3 (i, j bestimmt den Wert einer maximalen Teilfolge für a i,..., a j. (1 Wenn
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
Algorithms & Data Structures 2
Algorithms & Data Structures Digital Sorting WS B. Anzengruber-Tanase (Institute for Pervasive Computing, JKU Linz) (Institute for Pervasive Computing, JKU Linz) WIEDERHOLUNG :: UNTERE SCHRANKE FÜR SORTIEREN
Algorithmen und Datenstrukturen Heapsort
Algorithmen und Datenstrukturen 2 5 Heapsort In diesem Kapitel wird Heapsort, ein weiterer Sortieralgorithmus, vorgestellt. Dieser besitzt wie MERGE-SORT eine Laufzeit von O(n log n), sortiert jedoch das
Algorithmen und Datenstrukturen 12
12. Juli 2012 1 Besprechung Blatt 11 Fragen 2 Binary Search Binäre Suche in Arrays Binäre Suchbäume (Binary Search Tree) 3 Sortierverfahren Allgemein Heapsort Bubblesort Insertionsort Mergesort Quicksort
Klausur Algorithmen und Datenstrukturen
Technische Universität Braunschweig Wintersemester 2013/2014 Institut für Betriebssysteme und Rechnerverbund Abteilung Algorithmik Prof. Dr. Sándor P. Fekete Stephan Friedrichs Klausur Algorithmen und
Übung Algorithmen I
Übung Algorithmen I 18.5.16 Lukas Barth [email protected] (Mit Folien von Julian Arz, Timo Bingmann, Sebastian Schlag und Christoph Striecks) Roadmap Sortieren Kleine Wiederholung Visualisierungen Adaptives
Kapitel 8 Fortgeschrittene Sortieralgorithmen
Kapitel 8 Fortgeschrittene Sortieralgorithmen Zur Erinnerung: in Kapitel 6 Elementare Sortierverfahren Sortierverfahren, die auf Vergleichen von Werten basieren. Aufwand zum Sortieren von Feldern von n
Kap. 3: Sortieren. Überblick. Unser Sortierproblem. Motivation. Laufzeitmessung. Warum soll ich hier bleiben? Sortierverfahren sind WICHTIG!!!
Kap. 3: Sortieren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund Überblick Einführung in das Sortierproblem Insertion-Sort Selection-Sort Merge-Sort 4. VO
Algorithmen und Datenstrukturen 1
Algorithmen und Datenstrukturen 1 4. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik [email protected] 4. Sortierverfahren Elementare Sortierverfahren - Sortieren durch
Algorithmen und Datenstrukturen 1 Kapitel 5
Algorithmen und Datenstrukturen 1 Kapitel 5 Technische Fakultät [email protected] Vorlesung, U. Bielefeld, Winter 2005/2006 Kapitel 5: Effizienz von Algorithmen 5.1 Vorüberlegungen Nicht
Übung Datenstrukturen. Sortieren
Übung Datenstrukturen Sortieren Aufgabe 1 Gegeben sei nebenstehender Sortieralgorithmus für ein Feld a[] ganzer Zahlen mit N Elementen: a) Um welches Sortierverfahren handelt es sich? b) Geben Sie möglichst
Übung Algorithmen I
Übung Algorithmen I 24.5.17 Sascha Witt [email protected] (Mit Folien von Lukas Barth, Julian Arz, Timo Bingmann, Sebastian Schlag und Christoph Striecks) Organisatorisches Übungsklausur Am 21.06.2017
Algorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2017 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Programm heute 1 Einführung 2 Grundlagen von Algorithmen
Datenstrukturen & Algorithmen
Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Sortieralgorithmen Einleitung Heapsort Quicksort 2 Motivation Sortieren ist Voraussetzung für viele Anwendungen Nach
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 [email protected] Sprechstunde: Freitag, 12:30-14:00 Uhr, o.n.v.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens [email protected] Überblick Grundlagen Definitionen Eigene Entwicklungen Datenstrukturen Elementare Datentypen Abstrakte Datentypen Elementare
A6.1 Logarithmus. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. A6.1 Logarithmus. A6.2 Landau-Notation. A6.
Algorithmen und Datenstrukturen 8. März 2018 A6. Laufzeitanalyse: Logarithmus and Landau-Symbole Algorithmen und Datenstrukturen A6. Laufzeitanalyse: Logarithmus and Landau-Symbole Marcel Lüthi and Gabriele
f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2
Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Lösung - Präsenzübung.05.0 F. Corzilius, S. Schupp, T. Ströder Aufgabe (Asymptotische Komplexität): (6 + 0 + 6 = Punkte) a) Geben Sie eine formale
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
Algorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen
