Ausgewählte Algorithmen: Sortieren von Listen

Größe: px
Ab Seite anzeigen:

Download "Ausgewählte Algorithmen: Sortieren von Listen"

Transkript

1 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 Bubble-Sort Insertion-Sort Divide-und-Conquer Verfahren zum Sortieren Merge-Sort Literatur G. Saake & K.-U. Sattler. Algorithmen und Datenstrukturen. dpunkt Lehrbuch R. Sedgewick. Algorithmen. 2. Auflage. Addison Wesley Donald Knuth. The Art of Computer Programming, Volume 3: Sorting and Searching, Third Edition. Addison-Wesley, The xsortlab Applet. 1

2 Auswahl von Algorithmen I.a. gibt es immer mehrere Algorithmen zur Lösung eines Problems diese unterscheiden sich jedoch häufig bzgl. grundlegender Leistungsmerkmale (abgesehen davon, dass sie dasselbe Ergebnis liefern), wie Bedarf an Zeit, Speicher und anderen Ressourcen Welcher Algorithmus sollte dann gewählt werden? 1. Einfachere Algorithmen sind komplizierten Algorithmen vorzuziehen leichter zu verstehen, schneller zu implementieren wenn Algorithmus nur wenige Male abgearbeitet werden muss, dann lohnt sich Entwicklungsaufwand für optimierte Algorithmen of nicht falls Geschwindigkeit und Speicherbedarf für Anwendung nicht ausreichend: 2. Schnellere, ressourcensparende Algorithmen bevorzugen Kenntnis der Leistungsmerkmale wichtig Bewertung von Algorithmen: Zeitkomplexität Bewertung von Algorithmen Wie viele Computer-Ressourcen benötigt Ausführung des Algorithmus? hauptsächlich: Zeit, Speicher; auch Anzahl Prozessoren Maß für Zeitkomplexität (Ausführungszeit) Anzahl Operationen der Algorithmenausführung in Proportion zur Größe der Eingabe z.b. "Größe der Eingabe" bei Listen: n = Länge der Liste Grobe Abschätzung dabei pragmatisch ausreichend z.b. "proportional zu n", "proportional zu n 2 " mit n Größe der Eingabe d.h. Abstraktion von Ausführungsgeschwindigkeit von Programmen auf spezifischer Hardware 2

3 Theorie der Algorithmen Zeitkomplexität Beispiel: Zeitkomplexität des Standard-Multiplikations-Algorithmus 1984 * Multiplikation zweier n-stelligen Zahlen: jede Zeile kann in n Schritten (Zeiteinheiten) berechnet werden; es gibt n Zeilen es müssen n Zeilen mit jeweils n (oder n+1) Ziffern addiert werden Ausführungszeit proportional zu n*n oder n 2 Analyse von Algorithmen: Typische Zeitkomplexitäten konstant (proportional zu 1) logarithmisch (proportional zu log n) linear (proportional zu n) n log n quadratisch (proportional zu n 2 ) polynomial (proportional zu n k für k 1) exponentiell (proportional zu d n für d > 1) 3

4 Begründung für grobe Abschätzung der Zeitkomplexität von Algorithmen betrachte Funktionen f(n) = n g(n) = 50 n h(n) = n 2 für große n gilt n 2 >> c n für beliebiges c h(n) = n 2 g(n) = 50 n daher Unterscheidung bzgl. grobem Wachstumsverhalten "proportional zu n" "proportional zu n 2 " von konstanten Faktoren wird (zunächst) abgesehen n, 2 n, 50 n, usw. alle "proportional zu n" "asymptotische Komplexität" f(n) = n (Diagramm erzeugt mit 4-Zeiler in Python + matplotlib) Ausführungszeiten für Algorithmen unterschiedlicher Zeitkomplexität Größe n der Eingabedaten log 2 n Mikrosekunden n Mikrosekunden n 2 Mikrosekunden 2 n Mikrosekunden Jahrhunderte Sekunde astronomisch Minuten astronomisch Stunden astronomisch 4

5 Bester, schlechtester und durchschnittlicher Fall in Bezug auf die in Frage stehende Ressource (z.b. Zeit- oder Speicherbedarf) werden Algorithmen untersucht auf: Schlechtester Fall: Wie arbeitet der Algorithmus im schlimmsten Fall? wichtigstes Maß wenn bei Charakterisierung der Teitkomplexeität eines Algorithmus Fall nicht angeben, dann bezieht sich Aufwandsangabe auf schlechtesten Fall Durchschnittlicher Fall: Wie arbeitet der Algorithmus durchschnittlich? auch häufig betrachtet die zugrunde zu legende Verteilung für die Berechnung eines Durchschnitts ist aber nicht immer offensichtlich! Bester Fall: Wie arbeitet der Algorithmus im günstigsten Fall? nur manchmal von Interesse oft trügerisch Sortier-Algorithmen Sortieren von Listen z.b. [5,3,4,1,2] [1,2,3,4,5] auch lexikographisches Sortieren von Listen mit String-Elementen: z.b. ['bob', 'carl', 'alice'] ['alice', 'bob', 'carl'] Sortieren ist grundlegendes Problem in der Informatik! ca. ¼ der kommerziell verbrauchten Rechenzeit fällt auf Sortiervorgänge (nach: Ottmann & Widmayer. Algorithmen und Datenstrukturen. 2002) In der Informatik ist eine Vielzahl von Sortieralgorithmen bekannt Eigenschaften wie Zeitkomplexität sind gut untersucht im folgenden: drei Algorithmen dargestellt s.a. 5

6 Sortier-Algorithmus 1: Bubble-Sort Idee Bubble-Sort Wiederholtes Vertauschen von benachbarten Elementen, die in falscher Reihenfolge stehen; dazu i.a. mehrere Durchläufe notwendig Name rührt daher, dass in jedem Durchlauf große Elemente "wie Blasen im Wasser" ihrer endgültigen Position entgegenstreben Auch bekannt als "Sortieren durch Vertauschen" Algorithmus in Pseudo-Code Schleife über Durchlauf = 1.. N-1 Schleife über Position = 0.. N-1-Durchlauf Falls x[position] > x[position+1] dann Vertausche x[position] und x[position+1] Sortier-Algorithmus 1: Bubble-Sort Veranschaulichung 1. Durchlauf danach: größtes Element in endgültiger Position nach 10 Durchläufen: 10 größte Elemente in endgültiger Position allg: nach (n-1) Durchläufen ist Liste sortiert 6

7 Sortier-Algorithmus 1: Bubble-Sort Zeit-Komplexität Anzahl Vergleichsoperationen Durchgänge äußere Schleife: (n-1)-mal (n = Größe der Liste) Durchgänge innere Schleife (= Anz. Vergleichsoperationen): (n-1) + (n-2) + (n-3) ~ n 2 / 2 Ausführungszeit des Alg. proportional zu n 2 (bester, schlimmster und durchschnittlicher Fall) Algorithmus in Pseudo-Code Schleife über Durchlauf = 1.. N-1 Schleife über Position = 0.. N-1-Durchlauf Falls x[position] > x[position+1] dann Vertausche x[position] und x[position+1] Sortier-Algorithmus 1: Bubble-Sort Python-Implementierung Algorithmus in Pseudo-Code Schleife über Durchlauf = 1.. N-1 Schleife über Position = 0.. N-1-Durchlauf Falls x[position] > x[position+1] dann Vertausche x[position] und x[position+1] Implementierung in Python def bubblesort(l): for durchgang in range( 1, len(l) ): for index in range( len(l) - durchgang ): if l[index] > l[index + 1]: l[index], l[index + 1] = l[index + 1], l[index] return l 7

8 Sortier-Algorithmus 1: Bubble-Sort Trace der Python-Implementierung bubblesort( [5, 3, 5, 4, 2, 1] ) Eingabe: nach Durchgang 1 : [3, 5, 4, 2, 1, 5] nach Durchgang 2 : [3, 4, 2, 1, 5, 5] nach Durchgang 3 : [3, 2, 1, 4, 5, 5] nach Durchgang 4 : [2, 1, 3, 4, 5, 5] nach Durchgang 5 : [1, 2, 3, 4, 5, 5] Ergebnis: [1, 2, 3, 4, 5, 5] Eingabeliste der Länge 6 5 Durchgänge bubblesort( [2, 6, 5, 3, 4] ) nach Durchgang 1 : [2, 5, 3, 4, 6] nach Durchgang 2 : [2, 3, 4, 5, 6] nach Durchgang 3 : [2, 3, 4, 5, 6] nach Durchgang 4 : [2, 3, 4, 5, 6] Ergebnis: [2, 3, 4, 5, 6] Eingabeliste der Länge 5 4 Durchgänge Beobachtung: Liste schon nach 2. Durchgang sortiert! Sortier-Algorithmus 1: Bubble-Sort Verbesserte Variante Verbesserung von Bubble-Sort möglich, indem Algorithmus abgebrochen wird, sobald sich in einem Durchgang keine Veränderungen mehr ergeben dazu Einführung einer booleschen Variable, die überprüft ob im aktuellen Durchgang noch Listenelemente vertauscht werden def bubblesort2(l): for durchgang in range( 1, len(l) ): bubbling = False for index in range( len(l) - durchgang ): if l[index] > l[index + 1]: l[index], l[index + 1] = l[index + 1], l[index] bubbling = True if not bubbling: return l return l 8

9 Sortier-Algorithmus 1: Bubble-Sort Trace der Python-Implementierung, verbesserte Variante bubblesort2( [5, 3, 5, 4, 2, 1] ) nach Durchgang 1 : [3, 5, 4, 2, 1, 5] nach Durchgang 2 : [3, 4, 2, 1, 5, 5] nach Durchgang 3 : [3, 2, 1, 4, 5, 5] nach Durchgang 4 : [2, 1, 3, 4, 5, 5] nach Durchgang 5 : [1, 2, 3, 4, 5, 5] Ergebnis: [1, 2, 3, 4, 5, 5] Eingabeliste der Länge 6 immernoch 5 Durchgänge bubblesort2( [2, 6, 5, 3, 4] ) nach Durchgang 1 : [2, 5, 3, 4, 6] nach Durchgang 2 : [2, 3, 4, 5, 6] nach Durchgang 3 : [2, 3, 4, 5, 6] Ergebnis: [2, 3, 4, 5, 6] Eingabeliste der Länge 5, etwas besser 'vorsortiert' nur noch 3 Durchgänge bubblesort2( [1, 2, 3, 4, 5] ) nach Durchgang 1 : [1, 2, 3, 4, 5] Ergebnis: [1, 2, 3, 4, 5] Eingabeliste schon sortiert nur noch 1 Durchgang! Sortier-Algorithmus 1: Bubble-Sort Zeitkomplexität Zusammenfassung Bester Fall Proportional zu n Eingabe-Liste schon sortiert Schlechtester Fall Proportional zu n 2 z.b. Eingabe-Liste rückwärts sortiert Durchschnittlicher Fall Proportional zu n 2 d.h. Liste zufällig gemischt Zeitkomplexität Bubble-Sort, verbesserte Variante n = Länge der Liste 9

10 Sortier-Algorithmus 2: Insertion-Sort oder Suchen durch Einfügen Analogie zum Aufnehmen eines Stapels bei Kartenspiel: Nimm sukzessiv je eine Karte auf und ordne diese sortiert in einen zweiten Stapel ein def insertionsort(unsorted): sorted = [] for x in unsorted: insert(x, sorted) return sorted eine zweite Liste sorted wird erzeugt, anfangs leer fügt x an richtiger Stelle in die Liste sorted ein (Implementierung von insert nicht gezeigt) Sortier-Algorithmus 2: Insertion-Sort Trace der Python-Implementierung def insertionsort(unsorted): sorted = [] for x in unsorted: insert(x, sorted) return sorted insertionsort( [5, 3, 5, 4, 2, 1] ) sorted nach 1. Durchgang: [5] sorted nach 2. Durchgang: [3, 5] sorted nach 3. Durchgang: [3, 5, 5] sorted nach 4. Durchgang: [3, 4, 5, 5] sorted nach 5. Durchgang: [2, 3, 4, 5, 5] sorted nach 6. Durchgang: [1, 2, 3, 4, 5, 5] Sukzessiver Aufbau einer sortierten Liste, bis alle Elemente einsortiert sind Ergebnis: [1, 2, 3, 4, 5, 5] Nachteil des Alg.: Erzeugung einer zweiten Liste benötigt zus. Speicherplatz Variante, bei welcher die Eingabe-Liste in-place ("am Ort") sortiert wird 10

11 Sortier-Algorithmus 2: Insertion-Sort In-Place Variante Idee: Eingabeliste selbst wird konzeptuell aufgeteilt ein einen bereits sortierten Bereich (vorne) und einen unsortierten Bereich (hinten) keine weitere Kopie der Liste notwendig, Liste wird in-place sortiert sortierter Bereich hat zunächst Länge 1 (Teilliste mit nur einem Element) danach wird pro Schleifendurchgang 1 Element aus dem hinteren Bereich in den vorderen Bereich einsortiert def insertionsort2(l): for i in range(1,len(l)): j = i m = l[i] while j > 0 and l[j-1]>m: l[j] = l[j-1] j -= 1 l[j]=m return l insertionsort2( [5, 3, 5, 4, 2, 1] ) vor 1. Durchgang: [5, 3, 5, 4, 2, 1] nach Durchgang 1: [3, 5, 5, 4, 2, 1] nach Durchgang 2: [3, 5, 5, 4, 2, 1] nach Durchgang 3: [3, 4, 5, 5, 2, 1] nach Durchgang 4: [2, 3, 4, 5, 5, 1] nach Durchgang 5: [1, 2, 3, 4, 5, 5 ] Ergebnis: [1, 2, 3, 4, 5, 5 ] sortierter Bereich unsortierter Bereich Sortier-Algorithmus 2: Insertion-Sort Zeitkomplexität In-Place Variante Äußere Schleife wird (n-1) mal durchlaufen d.h. proportional zu n Anzahl Durchläufe der inneren Schleife (while) ist abhängig von Bedingung l[j-1] > m def insertionsort2(l): for i in range(1,len(l)): j = i m = l[i] while j > 0 and l[j-1]>m: l[j] = l[j-1] j -= 1 l[j]=m return l und somit Sortierungsgrad der Liste variiert von 0 bis (n-1) Durchläufen pro Durchgang der äußeren Schleife Bester Fall Eingabe-Liste schon sortiert Schlechtester Fall z.b. Eingabe-Liste rückwärts sortiert Durchschnittlicher Fall Proportional zu n Proportional zu n 2 Proportional zu n 2 Zeitkomplexität Insertion-Sort, in-place Variante n = Länge der Liste gleiche asymptotische Zeitkomplexität wie Bubble-Sort! 11

12 Empirischer Vergleich (Laufzeit) verschiedener Suchverfahren Vergleich dreier elementare Suchverfahren Zeitkomplexität im schlimmsten und durchschnittlichen Fall jeweils proportional zu n 2 Messung der Laufzeit zeigt aber, dass Bubble-Sort ca 3-mal langsamer als Insertion- Sort Source: O. Astrachan. Bubble Sort: An Archaeological Algorithmic Analysis. Sortier-Algorithmus 3: Merge-Sort Beispiel für Teile-und-Herrsche (Divide and Conquer) Methode Idee Sortieren ist einfacher für kurze als für lange Listen insbesondere sind Listen mit nur einem Element schon sortiert konkret Teile Liste in zwei kleinere Teil-Listen sortiere die Teil-Listen (evtl. durch weiteres Teilen) Verschmelze die sortierten Teil-Listen zum Endergebnis Bild: wikipedia.de 12

13 Sortier-Algorithmus 3: Merge-Sort Bild: wikipedia.de Sortier-Algorithmus 3: Merge-Sort Zeitkomplexität Pseudocode für Algorithmus Merge-Sort Funktion sort(liste) falls len(liste) > 1 teil1, teil2 split(liste) teil1 = sort(teil1) teil2 = sort(teil2) liste = merge(teil1, teil2) kann gezeigt werden: Ausführungszeit von Merge-Sort proportional zu n * log n, mit n Größe der Eingabeliste (schlechtester, durchschnittlicher und bester Fall) bessere Zeitkomplexität als Bubble-Sort, Insertion-Sort kann auch gezeigt werden: minimale Ausführungszeit für beliebige Algorithmen zur Lösung des Problems "Sortieren von Listen der Länge n" ist proportional zu n log n Merge-Sort ist optimaler Sortieralgorithmus (bzgl. Zeitkomplexität) 13

14 Zusammenfassung (1) bei kleinen Listen liefern i.d.r. alle Sortierverfahren sehr schnell Ergebnisse wenn in Anwendung nur kleine Listen vorkommen und kein besonderer Echtzeitbedarf besteht, dann kann beliebiger Alg. verwendet werden bei großen Listen, z.b. ab 100 Elementen, spielt Zeitkomplexität der Algorithmen eine entscheidende Rolle n log n Algorithmen (z.b. merge-sort) immer besser als n 2 Algorithmen (insertion sort, bubble sort) auch bei gleicher Zeitkomplexität zweier Algorithmen bestehen manchmal deutliche Unterschiede bzgl. tatsächlicher Laufzeit z.b. insertion-sort praktisch immer schneller als bubble-sort in speziellen Fällen kann Verwendung von insertion-sort o.ä. gegenüber n log n Algorithmus vorteilhaft sein: nämlich dann, wenn Liste fast immer vorsortiert ist dann durchschnittliche Zeitkomplexität von insertion-sort proportional zu n z.b. bei bestimmten Verfahren zur Kollisionserkennung in Echtzeit 3D-Computergraphik Zusammenfassung (2) Für die meisten praktischen Fälle liefern die Sortierverfahren der Standardbibliotheken der jeweiligen Programmiersprachen sehr gute Ergebnisse diese Implementierungen sind i.d.r. hochgradig optimiert z.b. Python: sort()-methode >>> l = ['T','U','-','B','A','F'] >>> l.sort() >>> print l ['-', 'A', 'B', 'F', 'T', 'U'] >>> 14

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

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

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

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

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

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

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

Termin 14: I) Web-Datenbank-Interaktion II) Theorie der Algorithmen. Generierung dynamischer Web-Seiten (mit Python Server Pages)

Termin 14: I) Web-Datenbank-Interaktion II) Theorie der Algorithmen. Generierung dynamischer Web-Seiten (mit Python Server Pages) Termin 14: I) Web-Datenbank-Interaktion II) Theorie der Algorithmen Grundlagen der Informatik Wintersemester 2006/07 Prof. Bernhard Jung Übersicht Generierung dynamischer Web-Seiten (mit Python Server

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

Grundlagen der Programmierung 2. Sortierverfahren

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

Mehr

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

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

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

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

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

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

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

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

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

Algorithmen und Datenstrukturen (für ET/IT)

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

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

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

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

Sortierverfahren für Felder (Listen)

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

Mehr

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

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt.

Bucketsort. Korrektheit. Beispiel. Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt. Bucketsort Beispiel Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt 1 2 A.78.17 0 1 B.12.17 Sonst: Skalieren ( Aufwand O(n) ) 3.39 2.21.23.26 Idee:

Mehr

Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt

Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt Bucketsort Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt Sonst: Skalieren ( Aufwand O(n) ) Idee: Teile [0, 1) in n gleich große Buckets - Oder: n/k

Mehr

Informatik II, SS 2018

Informatik II, SS 2018 Informatik II - SS 2018 (Algorithmen & Datenstrukturen) Vorlesung 2 (23.4.2018) Sortieren II, Asymptotische Analyse, O-Notation Algorithmen und Komplexität Laufzeit Zeitmessung SelectionSort n 2 Laufzeit/n

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

Grundlagen der Informatik

Grundlagen der Informatik Jörn Fischer j.fischer@hs-mannheim.de Willkommen zur Vorlesung Grundlagen der Informatik ADS-Teil Page 2 Überblick Inhalt 1 Eigenschaften von Algorithmen Algorithmenbegriff O-Notation Entwurfstechniken

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

Algorithmen und Datenstrukturen 1 Kapitel 5

Algorithmen und Datenstrukturen 1 Kapitel 5 Algorithmen und Datenstrukturen 1 Kapitel 5 Technische Fakultät robert@techfak.uni-bielefeld.de Vorlesung, U. Bielefeld, Winter 2005/2006 Kapitel 5: Effizienz von Algorithmen 5.1 Vorüberlegungen Nicht

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

(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

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

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

Übersicht. Datenstrukturen und Algorithmen. Divide-and-Conquer. Übersicht. Vorlesung 9: Quicksort (K7) Datenstrukturen und Algorithmen Vorlesung 9: (K7) Joost-Pieter Katoen Algorithmus Lehrstuhl für Informatik 2 Software Modeling and Verification Group http://moves.rwth-aachen.de/teaching/ss-5/dsal/ 2 7.

Mehr

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

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

Mehr

Mergesort. Idee. Die folgende Funktion mergesort sortiert eine Folge a vom unteren Index lo bis zum oberen Index hi.

Mergesort. Idee. Die folgende Funktion mergesort sortiert eine Folge a vom unteren Index lo bis zum oberen Index hi. Sortierverfahren Mergesort Das Sortierverfahren Mergesort erzeugt eine sortierte Folge durch Verschmelzen (engl.: to merge) sortierter Teilstücke. Mit einer Zeitkomplexität von (n log(n)) ist das Verfahren

Mehr

Sortieren durch Einfügen (Insertion Sort) fügt die restlichen Elemente nach und nach in die bereits sortierte Liste der abgearbeiteten Zahlen.

Sortieren durch Einfügen (Insertion Sort) fügt die restlichen Elemente nach und nach in die bereits sortierte Liste der abgearbeiteten Zahlen. Kapitel 6 Sortieren 6.1 Sortiermethoden Die Sortierung von Mengen von Datensätzen ist eine häufige algorithmische Operation auf Mengen bzw. Folgen von gleichartigen Datenobjekten (insbesondere in der betriebswirtschaftlichen

Mehr

A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.1 Untere Schranke. Algorithmen und Datenstrukturen. A7.2 Quicksort. A7.

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

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 Michael Barth, Philipp Meier und Gefei Zhang 01/05 2 Ziele Grundlegende Sortieralgorithmen auf Reihungen kennen lernen 3 Klassifizierung

Mehr

5 Sortieren in eindimensionalen Zellularautomaten

5 Sortieren in eindimensionalen Zellularautomaten 5 Sortieren in eindimensionalen Zellularautomaten 5.1 Für alle x A und w A bezeichne im folgenden N x (w) die Anzahl der Vorkommen des Symboles x in dem Wort w. 5.2 Problem. (Eindimensionales Sortieren

Mehr

Suchen in Listen und Hashtabellen

Suchen in Listen und Hashtabellen Kapitel 12: Suchen in Listen und Hashtabellen Einführung in die Informatik Wintersemester 2007/08 Prof. Bernhard Jung Übersicht Einleitung Lineare Suche Binäre Suche (in sortierten Listen) Hashverfahren

Mehr

Prof. Dr. Margarita Esponda

Prof. Dr. Margarita Esponda Analyse von Algorithmen Die O-Notation WS 2012/2013 Prof. Dr. Margarita Esponda Freie Universität Berlin 1 Korrekte und effiziente Lösung von Problemen Problem Wesentlicher Teil der Lösung eines Problems.

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2014 (Algorithmen & Datenstrukturen) Vorlesung 2 (22.4.2016) Sortieren II Algorithmen und Komplexität SelectionSort: Programm Schreiben wir doch das gleich mal als Java/C++ - Programm

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

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

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

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

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

Schiller-Gymnasium Hof

Schiller-Gymnasium Hof In der Informatik gibt es eine Vielzahl von Sortieralgorithmen, einen einfachen wollen wir uns vorerst noch ansehen: Der Bubble-Sort-Algorithmus Wir haben nicht sortiertes Datenfeld, z.b. $j 17 5 3 7 Wir

Mehr

Informatik II, SS 2016

Informatik II, SS 2016 Informatik II - SS 2016 (Algorithmen & Datenstrukturen) Vorlesung 3 (27.4.2014) O-Notation, Asymptotische Analyse, Sortieren III Algorithmen und Komplexität Selection Sort Algorithmus SelectionSort (informell):

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

Algorithmen und Datenstrukturen (für ET/IT)

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

Mehr

Der CKY-Parser. Vorlesung Computerlinguistische Techniken Alexander Koller. 27. Oktober 2015

Der CKY-Parser. Vorlesung Computerlinguistische Techniken Alexander Koller. 27. Oktober 2015 Vorlesung omputerlinguistische Techniken Alexander Koller 27. Oktober 2015 Übersicht Komplexität des KY-Algorithmus Implementierung in Python hift-reduce-parsing hift-regel: (a w, s) (w, s a) Reduce-Regel:

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

Technische Universität München SoSe 2018 Fakultät für Informatik, I Mai 2018 Dr. Stefanie Demirci

Technische Universität München SoSe 2018 Fakultät für Informatik, I Mai 2018 Dr. Stefanie Demirci Name: Vorname: Matr. Nr.: Technische Universität München SoSe 2018 Fakultät für Informatik, I-16 9. Mai 2018 Dr. Stefanie Demirci Probeklausur zu Algorithmen und Datenstrukturen Allgemeine Hinweise Die

Mehr

Algorithmik Kap. 2: Laufzeit von Algorithmen

Algorithmik Kap. 2: Laufzeit von Algorithmen 1. Motivation 1.1 Fallstudie: Sortieralgorithmen 1.2 Fallstudie: Selektionsalgorithmen 2. Laufzeit von Algorithmen 2.1 Grundlagen 2.2 3. Paradigmen des Algorithmenentwurfs 3.1 Dynamisches Programmieren

Mehr

Mergesort. Inhaltsverzeichnis. Veranschaulichung der Funktionsweise. aus Wikipedia, der freien Enzyklopädie

Mergesort. Inhaltsverzeichnis. Veranschaulichung der Funktionsweise. aus Wikipedia, der freien Enzyklopädie Mergesort aus Wikipedia, der freien Enzyklopädie Mergesort ist ein rekursiver, stabiler Sortieralgorithmus, der ähnlich wie Quicksort nach dem Prinzip Teile und herrsche (engl. Divide and conquer) arbeitet.

Mehr

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren

2.2 Allgemeine (vergleichsbasierte) Sortierverfahren . Allgemeine (vergleichsbasierte) Sortierverfahren Vergleichsbaum: Der Aufbau des Verbleichsbaum ist für jeden Algorithmus und jede Eingabelänge n gleich. Jede Permutation der Eingabe, muss zu einem anderen

Mehr

Technische Universität München SoSe 2015 Institut für Informatik I Mai 2015 Dr. Tobias Lasser. Aufgabe 1 Rechnen mit Landau-Symbolen

Technische Universität München SoSe 2015 Institut für Informatik I Mai 2015 Dr. Tobias Lasser. Aufgabe 1 Rechnen mit Landau-Symbolen Technische Universität München SoSe 2015 Institut für Informatik I-16 27. Mai 2015 Dr. Tobias Lasser Lösungsvorschläge zur Musterklausur zu Algorithmen und Datenstrukturen Aufgabe 1 Rechnen mit Landau-Symbolen

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

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

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Ü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

Mehr

Algorithmen und Datenstrukturen Heapsort

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

Mehr

Einführung in die Programmierung I. 6. Sortieren. Stefan Zimmer

Einführung in die Programmierung I. 6. Sortieren. Stefan Zimmer Einführung in die Programmierung I 6. Sortieren Stefan Zimmer 26.11.2007 2 Sortieren Gegeben seien n Dinge ai, 1 i n, und eine Vergleichsoperation (z.b. Zahlen und

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

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

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

Mehr

6. Sich selbst organisierende Datenstrukturen

6. Sich selbst organisierende Datenstrukturen 6. Sich selbst organisierende Datenstrukturen 6.1 Motivation einfach, wenig Verwaltungsoverhead effizient im amortisierten Sinn EADS 6.1 Motivation 201/598 6.2 Sich selbst organisierende lineare Listen

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

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Untere Schranken für Sortieren Sortieren mit linearem Aufwand Mediane und Ranggrössen 2 Wie schnell können wir sortieren?

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

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

Algorithmen und Datenstrukturen 1

Algorithmen und Datenstrukturen 1 Algorithmen und Datenstrukturen 1 6. Vorlesung Martin Middendorf / Universität Leipzig Institut für Informatik middendorf@informatik.uni-leipzig.de studla@bioinf.uni-leipzig.de Merge-Sort Anwendbar für

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

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

Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT

Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT Komplexität eines Algorithmus, Grössenordnung, Landau-Symbole, Beispiel einer Komplexitätsberechnung (Mergesort) 7. KOMPLEXITÄT Komplexität eines Algorithmus Algorithmen verbrauchen Ressourcen Rechenzeit

Mehr

Vorlesung Datenstrukturen

Vorlesung Datenstrukturen Vorlesung Datenstrukturen Sortieren von Feldern (1) Einfache Sortieralgorithmen Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 82 Motivation Natürliche Sortierung Sortierte Datenmengen

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

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen

Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen Kapitel 3 Zur Korrektheit und Effizienz von Algorithmen Ziel: Kurze Einführung in den Pseudocode zur Beschreibung von Algorithmen Induktionsbeweise als wichtiges Hilfsmittel, um die Korrektheit eines Algorithmus

Mehr

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Übung zu Algorithmen und Datenstrukturen (für ET/IT) Übung zu Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Jakob Vogel Computer-Aided Medical Procedures Technische Universität München Komplexität von Programmen Laufzeit kann näherungsweise

Mehr

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

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

Mehr

Algorithmen und Datenstrukturen I Grundlagen

Algorithmen und Datenstrukturen I Grundlagen Algorithmen und Datenstrukturen I Grundlagen Prof. Dr. Oliver Braun Letzte Änderung: 01.11.2017 14:15 Algorithmen und Datenstrukturen I, Grundlagen 1/24 Algorithmus es gibt keine präzise Definition Handlungsvorschrift

Mehr

Zunächst ein paar einfache "Rechen"-Regeln: Lemma, Teil 1: Für beliebige Funktionen f und g gilt:

Zunächst ein paar einfache Rechen-Regeln: Lemma, Teil 1: Für beliebige Funktionen f und g gilt: Der Groß-O-Kalkül Zunächst ein paar einfache "Rechen"-Regeln: G. Zachmann Informatik 1 - WS 05/06 Komplexität 22 Additionsregel Lemma, Teil 1: Für beliebige Funktionen f und g gilt: Zu beweisen: nur das

Mehr

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele

UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 5. Asymptotische Laufzeitkomplexität Definition Regeln Beispiele UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 5 Asymptotische Laufzeitkomplexität Definition Regeln Beispiele Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger

Mehr

Algorithmen und Datenstrukturen I. Grundlagen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München

Algorithmen und Datenstrukturen I. Grundlagen. Prof. Dr. Oliver Braun. Fakultät für Informatik und Mathematik Hochschule München Algorithmen und Datenstrukturen I Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 18.03.2018 18:16 Inhaltsverzeichnis Algorithmus..................................... 2 Problem

Mehr

? P = NP Die 1 Million $ Frage. Prof. Dr. Hans Jürgen Ohlbach P =? NP

? P = NP Die 1 Million $ Frage. Prof. Dr. Hans Jürgen Ohlbach P =? NP ? P = NP Die 1 Million $ Frage Prof. Dr. Hans Jürgen Ohlbach 1 Historie 23 Hilbertsche Probleme aus dem Jahr 1900 Derzeit 10 gelöst 5 ungelöst 8 unklar formuliert oder teilweise gelöst David Hilbert 1886

Mehr

Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt

Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt Bucketsort Eingabe: Array A mit n Elementen im Bereich [0,1) Annahme: die Elemente sind in [0,1) gleichverteilt Sonst: Skalieren ( Aufwand O(n) ), oder Algo etwas umschreiben Idee: Teile [0, 1) in k gleich

Mehr

6 Quicksort. die mittlere Laufzeit Θ(n log n) beträgt und. die in der asymptotischen Notation verborgenen Konstanten sehr klein sind.

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

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

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

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

Algorithmen und Datenstrukturen SS09. Foliensatz 15. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik Foliensatz 15 Michael Brinkmeier Technische Universität Ilmenau Institut für Theoretische Informatik Sommersemester 2009 TU Ilmenau Seite 1 / 16 Untere Schranken für das Vergleichsbasierte Sortieren TU

Mehr