Vorlesung Datenstrukturen

Größe: px
Ab Seite anzeigen:

Download "Vorlesung Datenstrukturen"

Transkript

1 Vorlesung Datenstrukturen Sortieren von Feldern (1) Einfache Sortieralgorithmen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 82

2 Motivation Natürliche Sortierung Sortierte Datenmengen sind unabdingbare Voraussetzung für den Menschen, Informationen in großen Datenbeständen überhaupt auffinden zu können. z.b. Telefonbücher, Wörterbücher, Personenlisten. Maschinelle Sortierung Obwohl es algorithmisch möglich ist, Informationen auch in nicht sortierten Datenbeständen aufzufinden, können aufgrund der Anordnung von Daten gemäß eines Sortierkriteriums Suchprozesse wesentlich beschleunigt werden (siehe binäre Suche). Sortierverfahren Wir wollen nun verschiedene Sortierverfahren für Felder kennenlernen und hinsichtlich verschiedener Kriterien analysieren. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 83

3 Gegenstand der Untersuchung Kriterium Performanz Um Sortieralgorithmen maschinenunabhängig vergleichen zu können, untersuchen wir alle Verfahren bezüglich Anzahl notwendiger Vergleichsoperationen Anzahl vorzunehmender Datenverschiebungen Um von eher unbedeutenden Algorithmendetails zu abstrahieren, wollen wir nur die Vergleichsoperationen zählen, die sich auf die zu sortierenden Datenelemente beziehen. Analog wollen wir nur Verschiebungen der zu sortierenden Datenelemente zählen. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 84

4 Gegenstand der Untersuchung Kriterium Datenverteilung Einige der untersuchten Algorithmen unterscheiden sich in ihrer Leistungsfähigkeit in Abhängigkeit der Verteilung der zu sortierenden Daten. Wir wollen drei Fälle herausgreifen und untersuchen, inwieweit eine eventuell schon vorliegende Ordnung der Daten Einfluss auf die Performanz des Algorithmus aufweist und dabei folgende Situationen analysieren: Daten sind schon sortiert best case Daten sind invers sortiert worst case Daten sind unsortiert average case Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 85

5 Gegenstand der Untersuchung Kriterium Zerlegbarkeit Inwieweit ist ein Verfahren für das so genannte externe Sortieren geeignet? Unter Umständen kann die zu sortierende Datenmenge so groß sein, dass sie nicht in den Primärspeicher (Hauptspeicher) passt. Dann muss das Sortierverfahren in der Lage sein, nur einen Teil des Datenbestandes zu bearbeiten und aus den bearbeiteten Teilen einen sortierten Gesamtdatenbestand generieren zu können. Konkret bedeutet dies dass die Daten zum Sortieren vom Sekundärspeicher (z.b. Festplatte, SSD) gelesen und anschließend die sortierten Daten auch wieder auf den Sekundärspeicher geschrieben werden müssen. Da die Zugriffszeiten sowie Schreib- und Leseoperationen auf dem Sekundärspeicher um Größenordnungen langsamer gegenüber vergleichbaren Primärspeicheroperationen sind, ist es nötig, die Anzahl dieser Zugriffe zu minimieren. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 86

6 Gegenstand der Untersuchung Kriterium Datensatz Für die endgültige Beurteilung der Leistungsfähigkeit eines Algorithmus spielen noch zwei weitere Parameter eine wesentliche Rolle: Größe des Sortierkriteriums (Schlüssel) Sind die zu vergleichenden Elemente nur einfache Werte (z.b. Integer-Zahlen) dann lassen sich Vergleichsoperationen vergleichsweise schnell durchführen. Sind die zu vergleichenden Elemente dagegen komplexerer Natur (z.b. Zeichenketten, Vektoren oder zusammengesetzte Datentypen), dann steigt aufgrund der längeren Dauer eines Vergleichs die Bedeutung der Anzahl durchzuführender Vergleiche für die Beurteilung eines Algorithmus enorm. Datensatzgröße Sind die zu sortierenden Datensätze groß (z.b. Zeichenketten und Strukturen), dann steigt der Einfluss der Anzahl zu verschiebender Datensätze für die Beurteilung eines Algorithmus. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 87

7 Gegenstand der Untersuchung Kriterium Komplexität (des Sortieralgorithmus) Auch die Frage, wie komplex das dem Sortieralgorithmus zugrundeliegende Verfahren gestrickt ist, sollte in die Entscheidung mit einfließen: Sortierszenario 1: Es werden gelegentlich eher wenig Elemente sortiert: Bei Selbstimplementierung sollte man einen einfachen Achtzeiler einem effizienteren aber auch komplexeren und somit fehleranfälligeren Verfahren vorziehen. Alternativ können existierende Bibliotheksfunktionen unbesehen verwendet werden. Sortierszenario 2: Es werden oft sehr viele Elemente sortiert Bei Selbstimplementierung sollte man auch einen auf den ersten Blick bescheiden anmutenden Leistungsvorteil von 10% zwischen zwei Verfahren nicht ignorieren. Bei Verwendung von Bibliotheksfunktionen sollte man sich über die Eignung der zugrunde liegenden Verfahren informieren. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 88

8 Einfache Sortieralgorithmen BubbleSort SelectionSort InsertionSort Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 89

9 Einfache Sortieralgorithmen BubbleSort SelectionSort InsertionSort Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 90

10 Vorbereitung Vertauschen zweier Elemente Eine Basisoperation der meisten der im folgenden untersuchten Sortieralgorithmen besteht im Vertauschen zweier Feldelemente. Aus Gründen der Übersichtlichkeit lagern wir das Vertauschen in eine Funktion swap aus, die via call-by-reference die beiden Funktionsargumente direkt vertauscht: void swap(elementtyp& a, Elementtyp& b) { Elementtyp temp = a; a = b; b = temp; } Jede durch Aufruf von swap durchgeführte Vertauschung bewirkt drei Datenbewegungen. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 91

11 BubbleSort Bedeutung Sortieren durch direktes Austauschen Funktionsweise Durchlaufe wiederholt das Feld und vertausche direkt benachbarte Elemente wenn nötig. void bubblesort(elementtyp data[], int n) { for ( int i = 0; i < n - 1; i++ ) for ( int j = n - 1; j > i; j-- ) if ( data[j] < data[j - 1] ) swap(data[j - 1], data[j]); } Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 92

12 Laufzeit Anzahl Vergleiche Die Anzahl an Vergleichen ist unabhängig von der Verteilung der Daten und hängt nur von der Anzahl aller Iterationen der beiden Schleifen ab: n 2 i= 0 (n 1 i) = n(n 1) 2 void bubblesort(elementtyp data[], int n) { for ( int i = 0; i < n - 1; i++ ) for ( int j = n - 1; j > i; j-- ) if ( data[j] < data[j - 1] ) swap(data[j - 1], data[j]); } Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 93

13 Laufzeit Anzahl Datenbewegungen Im Best Case werden keine Tausch- operationen durchgeführt. Im Worst Case haben wir genau so viel Vertauschungen wie Vergleiche. void bubblesort(elementtyp data[], int n) { for ( int i = 0; i < n - 1; i++ ) for ( int j = n - 1; j > i; j-- ) if ( data[j] < data[j - 1] ) swap(data[j - 1], data[j]); } Im Average Case können für den i-ten Durchlauf der äußeren Schleife 0 bis n 1 i Vertauschungen in der inneren Schleife folgen, im Schnitt sind dies (n 1 i) / 2 Tauschoperationen. Damit ergibt sich dann folgende Anzahl an Vertauschungen (die Anzahl an Datenbewegungen erhält man durch Multiplikation mit drei - siehe Definition der Funktion swap): n 2 n i 1 = 1 n 2 (n 1) 1 n 2 i = i= 0 i= 0 i= 0 (n 1)2 2 (n 1)(n 2) 4 = n(n 1) 4 Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 94

14 Bewertung Vorteil Der BubbleSort-Algorithmus ist sehr einfach zu verstehen und zu implementieren und benötigt keinen zusätzlichen Speicher. Nachteil Laufzeit O(n 2 ) Optimierung BubbleSort kann beschleunigt werden, z.b. indem festgestellt wird, ob beim Durchlauf der inneren Schleife eine Tauschoperation stattgefunden hat. Ist dies nicht der Fall, dann ist das Feld bereits sortiert und der Algorithmus kann abgebrochen werden. vgl. Sortieralgorithmus aus der Lehrveranstaltung Algorithmen & Programmierung. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 95

15 Einfache Sortieralgorithmen BubbleSort SelectionSort InsertionSort Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 96

16 SelectionSort Bedeutung Sortieren durch direktes Auswählen Funktionsweise 1. Suche das kleinste Element im Feld und tausche es mit dem ersten Feldelement. 2. Bilde ein neues (virtuelles) Feld, das alle Elemente des zuletzt betrachteten Feldes ab dem zweiten Feldelement beinhaltet. void selectionsort(elementtyp data[], int n) { for ( int i = 0; i < n - 1; i++ ) { int min = i; for ( int j = i + 1; j < n; j++ ) if ( data[j] < data[min] ) min = j; swap(data[min], data[i]); } } 3. Wenn das (virtuelle) Feld noch mindestens zwei Elemente enthält, gehe zu Schritt 1. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 97

17 Laufzeit Anzahl Vergleiche Die äußere Schleife wird n 1 mal ausgeführt und für den i-ten Durchlauf der äußeren Schleife iteriert die innere Schleife n 1 i mal. n 2 i= 0 (n 1 i) = (n 1) = Anzahl Datenbewegungen n(n 1) 2 void selectionsort(elementtyp data[], int n) { for ( int i = 0; i < n - 1; i++ ) { int min = i; for ( int j = i + 1; j < n; j++ ) if ( data[j] < data[min] ) min = j; swap(data[min], data[i]); } } Unabhängig von irgendwelchen Vergleichsergebnissen werden nur in der äußeren Schleife Daten bewegt, je Tauschoperation haben wir immer drei Datenbewegungen, insgesamt also 3(n 1). Situationsanalyse Unabhängig davon, ob die Elementfolge bereits vorsortiert ist oder nicht, die Anzahl an Vergleichen und Datenbewegungen bleibt immer konstant und ist nur von der Anzahl der Elemente n abhängig. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 98

18 Bewertung Laufzeit Die Laufzeit von SelectionSort ist nur von der Elementanzahl und nicht von der Verteilung der Daten abhängig. Vorteile intuitiver und leicht zu implementierender Algorithmus schnell bei kleinen Datenmengen es wird kein zusätzlicher Speicher benötigt im Vorhinein exakt kalkulierbare Laufzeit für z.b. Echtzeitanwendungen Nachteile Allgemeine Laufzeit O(n 2 ) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 99

19 Einfache Sortieralgorithmen BubbleSort SelectionSort InsertionSort Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 100

20 InsertionSort Bedeutung Sortieren durch direktes Einfügen Funktionsweise Betrachte die Elemente nacheinander und füge jedes an seinen Platz zwischen den bereits betrachteten Elementen ein (Analogie: Sortierung von in die Hand genommenen Spielkarten) void insertionsort( Elementtyp data[], int n ) { int i, j; for ( i = 1; i < n; i++ ) { Elementtyp temp = data[i]; for ( j = i; j > 0 && temp < data[j - 1]; j-- ) data[j] = data[j - 1]; data[j] = temp; } } Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 101

21 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 102

22 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 103

23 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 104

24 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 105

25 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 106

26 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 107

27 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 108

28 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 109

29 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 110

30 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 111

31 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 112

32 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 113

33 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 114

34 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 115

35 Beispiel Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 116

36 Laufzeit Best Case n 1 Vergleiche void insertionsort( Elementtyp data[], int n ) { int i, j; for ( i = 1; i < n; i++ ) { Elementtyp temp = data[i]; for (j = i; j > 0 && temp < data[j - 1]; j--) data[j] = data[j - 1]; data[j] = temp; } } 2(n 1) Datenbewegungen (unabhängig von den Vergleichen) Worst Case Je Durchlauf der äußeren Schleife haben wir i Vergleiche, insgesamt also n 1 i=1 i = (n 1) = n(n 1) 2 Je Vergleich haben wir eine Datenbewegung und zusätzlich noch die 2(n 1) Datenbewegungen, die unabhängig von den Vergleichen sind, insgesamt also n(n 1) 2 + 2(n 1) = n 2 + 3n 4 2 Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 117

37 Laufzeit Average Case Je äußerem Schleifen- durchlauf können 1,2,... oder i Vergleiche durchgeführt werden, das sind im Schnitt (i+1)/2 Vergleiche je Iteration, insgesamt ergeben sich void insertionsort( Elementtyp data[], int n ) { int i, j; for ( i = 1; i < n; i++ ) { Elementtyp temp = data[i]; for (j = i; j > 0 && temp < data[j - 1]; j--) data[j] = data[j - 1]; data[j] = temp; } } n 1 i +1 = 1 1 i + = i=1 n 1 i=1 n 1 i=1 n(n 1) / (n 1) = n 2 + n 2 4 Je äußerem Schleifendurchlauf können demzufolge 0,1,... oder i 1 Datenbewegungen (je nach Ergebnis) auftreten, das sind (i 1)/2 Datenbewegungen, dazu kommen noch zwei unbedingte Datenbewegungen; insgesamt ergeben sich n 1 i=1 # i 1 % $ & ( = 1 ' 2 n 1 i=1 i + n 1 i=1 3 2 = n(n 1) / (n 1) = n 2 + 5n 6 4 Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 118

38 Bewertung Anmerkungen InsertionSort sortiert nur dann, wenn es unbedingt nötig ist. Ist ein Feld bereits vorsortiert, kommt es zu keinen nennenswerten Datenverschiebungen. Allerdings muss beim Einsortieren eines Wertes das gesamte Restfeld um eine Position nach hinten verschoben werden. Vorteile Nachteil verständlicher Algorithmus, der leicht implementiert werden kann schnell bei genügend vorsortierten Daten und sehr kleinen Datenmengen es wird kein zusätzlicher Speicher benötigt eine Folge muss nicht komplett vorliegen um sortiert werden zu können, neu eintreffende Elemente werden einfach an der richtigen Stelle eingefügt günstig für Online-Anwendungen Allgemeine Laufzeit O(n 2 ) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 119

39 Vergleich zu BubbleSort Anmerkungen Alle drei vorgestellten Sortieralgorithmen haben eine allgemeine Laufzeit von O(n 2 ) Im Schnitt benötigt BubbleSort jedoch doppelt so viele Vergleiche bei gleicher Anzahl an Datenbewegungen wie InsertionSort. Im Schnitt benötigt BubbleSort n-mal mehr Datenbewegungen als SelectionSort bei gleicher Anzahl an Vergleichen. Konsequenz Trotz gleicher Laufzeitobergrenze sind sowohl InsertionSort als auch SelectionSort dem BubbleSort-Verfahren vorzuziehen. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 120

40 Zwischenbilanz Performanz der Sortierverfahren Wir haben bisher drei Sortierverfahren kennen gelernt, die sich zwar im Detail in ihren Leistungsparametern unterscheiden, aber für den allgemeinen Fall einer unsortierten Folge von Elementen in die gleiche Leistungsklasse O(n 2 ) eingeordnet werden müssen. Exemplarischer Vergleich der Rechenschritte Feldgröße n O(log n) O(n) O(n log n) O(n 2 ) Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 121

41 Effiziente Sortierverfahren Gibt es effizientere Sortierverfahren? Wir werden in der nächsten Einheit zwei effiziente Sortierverfahren kennenlernen, die in der Komplexitätsklasse O(n log n) liegen. Tatsächlich kann kein Sortierverfahren für allgemeine Daten besser als in O(n log n) laufen (wir werden diese Behauptung später noch beweisen). Jedoch ist es möglich, für spezielle Datenkonstellationen Sortierverfahren zu entwickeln, die in linearer oder sogar in sublinearer Zeit laufen. Wir wollen so ein Verfahren anhand der folgenden Aufgabenstellung demonstrieren: Gesucht sei ein Algorithmus zur Sortierung eines Feldes mit N Elementen. Dabei enthalte das Feld ausschließlich positive Integer-Zahlen im Bereich von 1 bis N in beliebiger Reihenfolge. Duplikate können existieren. Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 122

42 Ende der Vorlesung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 123

Vorlesung Datenstrukturen

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

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

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Heaps Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 469 Prioritätswarteschlange Problem Häufig ist das Prinzip einer einfachen Warteschlangen-Datenstruktur

Mehr

Übung: Algorithmen und Datenstrukturen SS 2007

Ü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

Mehr

(08 - Einfache Sortierverfahren)

(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

Mehr

7. Sortieren Lernziele. 7. Sortieren

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

Mehr

Tutoraufgabe 1 (Sortieralgorithmus):

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

Mehr

Kapitel 10. Komplexität von Algorithmen und Sortieralgorithmen

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:

Mehr

Einführung in die Informatik Algorithmen und Datenstrukturen. Thema 17 Sortieren

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.

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

Übung Datenstrukturen. Sortieren

Ü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

Mehr

Ziele. Kapitel 10: Komplexität von Algorithmen und Sortierverfahren. Beispiel: Lineare Suche eines Elements in einem Array (1)

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

Mehr

Prof. Dr. Margarita Esponda

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

Mehr

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

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

Mehr

Suchen und Sortieren

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

Mehr

Elementare Sortierverfahren

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.......................................

Mehr

Programmiertechnik II

Programmiertechnik II Sortieren: Einfache Algorithmen Sortieren Abstrakte Operation geg: Menge von items (Elemente) jedes Element besitzt Sortierschlüssel Schlüssel unterliegen einer Ordnung eventuell sind doppelte Schlüssel

Mehr

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

Algorithmen I. Tutorium 1-3. Sitzung. Dennis Felsing Algorithmen I Tutorium 1-3. Sitzung Dennis Felsing dennis.felsing@student.kit.edu www.stud.uni-karlsruhe.de/~ubcqr/algo 2011-05-02 Überblick 1 Sortieren und Suchen 2 Mastertheorem 3 Datenstrukturen 4 Kreativaufgabe

Mehr

Kapitel 3: Sortierverfahren Gliederung

Kapitel 3: Sortierverfahren Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Algorithmen und Datenstrukturen. Kapitel 3: Sortierverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen. Kapitel 3: Sortierverfahren. Skript zur Vorlesung. Algorithmen und Datenstrukturen LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS DATABASE Algorithmen und Datenstrukturen Kapitel 3: Sortierverfahren Skript zur Vorlesung Algorithmen und Datenstrukturen Sommersemester

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

Aufgabe (Schreibtischtest, Algorithmenanalyse)

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

Mehr

Algorithmen und Datenstrukturen

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

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

Algorithms & Data Structures 2

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

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Lineare Listen (1) Einfach verkettete Listen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 148 Wiederholung Felder Vorteil Der Zugriff auf ein beliebiges

Mehr

Interne Sortierverfahren

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

Mehr

A3.1 Sortieralgorithmen

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

Mehr

Abschnitt 19: Sortierverfahren

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

Mehr

Grundlagen: Algorithmen und Datenstrukturen

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 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

Mehr

Grundlegende Sortieralgorithmen

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

Mehr

Programmierung mit C Algorithmen

Programmierung mit C Algorithmen Programmierung mit C Algorithmen Informationen /7/ Robert Sedgewick Algorithmen in C. 742 Seiten, ISBN 3-827-37182-1. /8/ Kyle Loudon Algorithmen mit C, ISBN 3-4897-211653-0. Online-Buch "C von A bis Z",

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

2. Hausübung Algorithmen und Datenstrukturen

2. Hausübung Algorithmen und Datenstrukturen Prof. Dr. Gerd Stumme, Folke Eisterlehner, Dominik Benz Fachgebiet Wissensverarbeitung 7.4.009. Hausübung Algorithmen und Datenstrukturen Sommersemester 009 Abgabetermin: Montag, 04.05.009, 10:00 Uhr 1

Mehr

Grundlegende Sortieralgorithmen

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

Mehr

Übung Algorithmen und Datenstrukturen

Ü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

Mehr

3. Hausübung Algorithmen und Datenstrukturen

3. Hausübung Algorithmen und Datenstrukturen Prof. Dr. Gerd Stumme, Folke Eisterlehner, Dominik Benz Fachgebiet Wissensverarbeitung 3. Hausübung Algorithmen und Datenstrukturen Sommersemester 2009 Abgabetermin: Montag, 18.05.2009, 10:00 Uhr 11.05.2009

Mehr

Informatik II Sortieren

Informatik II Sortieren lausthal Sortieralgorithmen Informatik II Sortieren Preprocessing fürs Suchen sind für kommerzielle Anwendungen häufig die Programmteile, die die meiste Rechenzeit verbrauchen viele raffinierte Methoden

Mehr

Informatik II Sortieren

Informatik II Sortieren lausthal Informatik II Sortieren. Zachmann lausthal University, ermany zach@in.tu-clausthal.de Sortieralgorithmen Preprocessing fürs Suchen sind für kommerzielle Anwendungen häufig die Programmteile, die

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

Programmieren und Problemlösen

Programmieren und Problemlösen Dennis Komm Programmieren und Problemlösen Komplexität von Algorithmen Frühling 2019 27. Februar 2019 Komplexität von Algorithmen Aufgabe Primzahltest Schreibe ein Programm, das eine ganze Zahl x als Eingabe

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

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit

Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit Praktikum Algorithmische Anwendungen WS 2006/07 Sortieren in linearer Laufzeit Team A blau Martin Herfurth 11043831 Markus Wagner 11043447 5. Februar 2007 1 1 Untere Schranke für Vergleichsbasierte Algorithmen

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

Algorithmen und Datenstrukturen

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

Mehr

Algorithmen und Datenstrukturen 12

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

Mehr

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

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

Mehr

3.2. Divide-and-Conquer-Methoden

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

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Technische Universität München WiSe 2012/13 Institut für Informatik I-16 Lösungsblatt 7 Dr. Tobias Lasser 3. Dezember 2012 Jakob Vogel Algorithmen und Datenstrukturen Aufgabe 1 Rechnen mit Landau-Symbolen

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

Aufgabe (Schreibtischtest, lexikographische Ordnung)

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

Mehr

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

lim log 2n n = > 0 Da es einen Limes gibt, gibt es auch einen Limes inferior, der gleich diesem Limes ist. Prof. aa Dr. Ir. Joost-Pieter Katoen Christian Dehnert, Jonathan Heinen, Thomas Ströder, Sabrina von Styp Aufgabe 1 (O-Notation): Beweisen oder widerlegen Sie die folgenden Aussagen: (3 + 3 + 4 = 10 Punkte)

Mehr

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

8.1.3 Operation Build-Max-Heap Operation zur Konstruktion eines Heaps Eingabe: Feld A[1..n], n = länge(a) BUILD-MAX-HEAP (A) Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld

Mehr

Technische Universität München

Technische Universität München Stand der Vorlesung: Datenstruktur Heap: fast vollständiger Binärbaum MaxHeap: sortierter Heap, größtes Element an Wurzel Sortierverfahren: HeapSort: Sortieren eines Feldes A[1.. n] Idee: in place: Feld

Mehr

Kapitel 2. Weitere Beispiele Effizienter Algorithmen

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

Mehr

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

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

Mehr

Grundlagen: Algorithmen und Datenstrukturen

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

Mehr

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Präsenzübung Datenstrukturen und Algorithmen SS 2014 Prof. aa Dr. E. Ábrahám F. Corzilius, S. Schupp, T. Ströder Präsenzübung Datenstrukturen und Algorithmen SS 2014 Vorname: Nachname: Studiengang (bitte genau einen markieren): Informatik Bachelor Informatik

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

Komplexität von Algorithmen:

Komplexität von Algorithmen: Komplexität von Algorithmen: Ansatz: Beschreiben/erfassen der Komplexität über eine Funktion, zur Abschätzung des Rechenaufwandes abhängig von der Größe der Eingabe n Uns interessiert: (1) Wie sieht eine

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

Abschnitt 7: Komplexität von imperativen Programmen

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

Mehr

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

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.

Mehr

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

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

Mehr

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

Sortieren und Suchen. Jens Wächtler Hallo Welt! -Seminar LS 2 Sortieren und Suchen Jens Wächtler 17.05.2017 Hallo Welt! -Seminar LS 2 Überblick Sortieren kurze Wiederholung Binäre & Ternäre Suche Binäre Suche in einer Liste Bisektionsverfahren (Nullstellensuche)

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

Algorithmen und Datenstrukturen 1 VL Übungstest WS November 2008

Algorithmen und Datenstrukturen 1 VL Übungstest WS November 2008 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 1. Übungstest WS 2008 07. November

Mehr

AlgoDat Fragen zu Vorlesung und Klausur

AlgoDat Fragen zu Vorlesung und Klausur AlgoDat Fragen zu Vorlesung und Klausur Hochschule Fulda FB AI Sommersemester 2018 http://ad.rz.hs-fulda.de Peter Klingebiel, HS Fulda, AI Vorab: Was ist wichtig? AlgoDat - Fragen - Peter Klingebiel -

Mehr

Datenstrukturen Kurzanleitung

Datenstrukturen Kurzanleitung Datenstrukturen Kurzanleitung Insertionsort p = (7, 5, 4, 83, 6, 6) n = 6 Start: K ist sortierte Folge. Für i =, 3, 4,..., n: Füge ki in eine sortierte Folge ( k, k, k 3,..., k n ) in der richtigen Position

Mehr

Datenstrukturen und Algorithmen (SS 2013)

Datenstrukturen und Algorithmen (SS 2013) Datenstrukturen und Algorithmen (SS 2013) Präsenzübung Musterlösung Dienstag, 28.05.2013 Aufgabe 1 (Allgemeine Fragen [20 Punkte]) 1. Tragen Sie in der folgenden Tabelle die Best-, Average- und Worst-Case-

Mehr

Ein Seminarbericht von Johann Basnakowski

Ein Seminarbericht von Johann Basnakowski Ein Seminarbericht von Johann Basnakowski Arbeitsbereich Wissenschaftliches Rechnen Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg Name: Johann Basnakowski

Mehr

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

Thema der Unterrichtseinheit: Sortieralgorithmus Bubblesort (Sortieren durch Vertauschen)

Thema der Unterrichtseinheit: Sortieralgorithmus Bubblesort (Sortieren durch Vertauschen) Lehrprobenentwurf Vorgelegt von: Guido Breuer Datum: 18. April 2005 Zeit: 9.20 10.10 Uhr Schule: Robert-Schuman-Institut Eupen Klasse: 5. Jahr technische Befähigung, Industrie-Elektronik / Industrie-Informatik

Mehr

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

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

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

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

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

Mehr

Algorithmen und Datenstrukturen

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

Mehr

Übung Algorithmen und Datenstrukturen

Ü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

Mehr

Kap. 3: Sortieren. 4. VO DAP2 SS April 2009

Kap. 3: Sortieren. 4. VO DAP2 SS April 2009 Kap. 3: Sortieren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 4. VO DAP2 SS 2009 23. April 2009 1 Überblick Einführung in das Sortierproblem Insertion-Sort

Mehr

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 16/17 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

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

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund

Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 12/13 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de

Mehr

Satz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n).

Satz 172 Jedes vergleichsbasierte Sortierverfahren benötigt im worst-case mindestens n ld n + O(n) Vergleiche und hat damit Laufzeit Ω(n log n). 2.6 Vergleichsbasierte Sortierverfahren Alle bisher betrachteten Sortierverfahren sind vergleichsbasiert, d.h. sie greifen auf Schlüssel k, k (außer in Zuweisungen) nur in Vergleichsoperationen der Form

Mehr

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

Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp Algorithmen und Datenstrukturen (Th. Ottmann und P. Widmayer) Folien: Einfache Sortierverfahren Autor: Stefan Edelkamp Institut für Informatik Georges-Köhler-Allee Albert-Ludwigs-Universität Freiburg 1

Mehr

Kap. 2: Abstrakte Datentypen Kap. 3: Sortieren

Kap. 2: Abstrakte Datentypen Kap. 3: Sortieren Kap. 2: Abstrakte Datentypen Kap. 3: Sortieren Professor Dr. Lehrstuhl für Algorithm Engineering, LS11 Fakultät für Informatik, TU Dortmund 4. VO DAP2 SS 2008 17. April 2008 1 ADT Queue ADT Dictionary

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

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Wintersemester 2012/13 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

Klausur Algorithmen und Datenstrukturen

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

Mehr

Sortieren Anordnen einer gegebenen Menge von Objekten in einer bestimmten Ordnung.

Sortieren Anordnen einer gegebenen Menge von Objekten in einer bestimmten Ordnung. Informatik II - 195 Kapitel 9 Sortierverfahren Sortieren Anordnen einer gegebenen Menge von Objekten in einer bestimmten Ordnung Sortierte Folgen von Objekten bringen eine deutliche Vereinfachung für den

Mehr

Sortieren II / HeapSort Heaps

Sortieren II / HeapSort Heaps Organisatorisches VL-07: Sortieren II: HeapSort (Datenstrukturen und Algorithmen, SS 2017) Vorlesung: Gerhard Woeginger (Zimmer 4024 im E1) Email: dsal-i1@algo.rwth-aachen.de Webseite: http://algo.rwth-aachen.de/lehre/ss17/dsa.php

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen B4. Priority Queues und Heaps Marcel Lüthi and Gabriele Röger Universität Basel 28. März 2018 Einführung Kollektion von Elementen Grundlegende Operationen sind Einfügen

Mehr