Mergesort Divide and Conquer

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Sortieren I - Bubblesort -
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Claudio Moraga; Gisbert Dittrich
WS 03/041 Algorithmentheorie 01 - Einleitung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
Hochschule Fulda – FB ET Sommersemester 2010
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Kapitel 6: Klassifizierung von Sortiertechniken
G.Heyer Algorithmen und Datenstrukturen II 1 Algorithmen und Datenstrukturen II Wintersemester 2000 / 2001 Prof. Dr. Gerhard Heyer Institut für Informatik.
Kapitel 7. Sortier-Algorithmen
Kapitel 6. Suchverfahren
Imperative Programmierung
Lehrstuhl Informatik III, DatenbanksystemeMartin Wimmer Übung zu Architektur und Implementierung von Datenbanksystemen 1 Implementierungen des Join- Operators.
Sortierverfahren Richard Göbel.
Sortierverfahren Richard Göbel.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (04 – Entwurfsverfahren) Prof. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmen und Datenstrukturen
WS 06/07 Algorithmentheorie 01 - Einleitung Prof. Dr. Th. Ottmann Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (09 - Weitere Sortierverfahren) Prof. Th. Ottmann.
Geometrisches Divide and Conquer
Sortierverfahren Susanne Freitag.

EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Vortrag: Ingo Gensch, Mathias Reich am:
Bubbelsort und Quicksort Vortrag von Rolf Heitzenröder
Bestimmung des ggT zweier Zahlen
Einfach verkettete Listen (OOP)
Rekursion mit Listen: Quicksort
4 Sortierverfahren 4.1 Einführung 4.2 Naive Sortierverfahren
Merge-Sort und Binäres Suchen /10D. Haehn Populäres algorithmisches Lösungsverfahren Populäres algorithmisches Lösungsverfahren Divide: Problem.
Computational Thinking Suchen und Sortieren [Ordnung muss sein…]
Algorithmen Gruppe 4.
Sortieralgorithmen Sortieren von Arrays.
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Grundlagen der Informatik 4 Lehrstuhl für Betriebssysteme 1 Wie werden Funktionen realisiert? Beispiel: int maximum(int x, int y) { int j = x; if (y >
Rekursion Rekursive Funktionen, Korrektheit, Terminierung, Rekursion vs. Iteration, Sortieren.
1.6 Die Datenstruktur Stapel Ein Stapel (Stack) ist ein Sonderfall einer Liste. Die Elemente werden nach dem Prinzip LIFO (Last In First Out) angefügt.
Mergesort.
Informatik Datenstruktur Graph 3.3 Durchlaufen von Graphen
Programmieren in C Sortieren, Suchen
Sortieralgorithmen Greedy Sortieren: Sortieren durch Auswahl, Einfügen und Austauschen Divide-and-Conquer-Sortieren: Quicksort und merge sort Foliensatz.
Selection-Sort Insertion-Sort Bubble-Sort.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Rekursion-
M a r c – o l i v e r p a h l Informatik II – Kapitel 12 „Sortier-Algorithmen“ Zusammenfassung des Kapitel 12 Küchlin, Weber, Einführung in die Informatik,
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Mergesort.
Programmiersprachen II Fortsetzung Datenstrukturen Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
InsertionSort Einfügen eines Elements an der richtigen Stelle eines bereits sortierten Arrays. Verschiebungen von Elementen statt Vertauschungen Element.
Rekursion – Speicherverwaltung
Einführung in die Programmierung
Wiederholung TexPoint fonts used in EMF.
Einführung in die Programmierung
Raphael Fischer Informatik II - Übung 10 Raphael Fischer
PGdP Tutorstunde 4 Gerald Mahlknecht Technische Universität München Informatik Divide and Conquer.
Heapsort-Algorithmus
 Präsentation transkript:

Mergesort Divide and Conquer Präsentationsprüfung Informatik 2005 Patrick Stürmlinger Mergesort Divide and Conquer

Gliederung Allgmeine Informationen Funktionsweise Der Algorithmus Präsentationsprüfung Informatik 2005 Patrick Stürmlinger Allgmeine Informationen Funktionsweise Der Algorithmus Implementierung Vor- und Nachteile Vergleich mit Insertionsort Quellen

Allgemeine Informationen Präsentationsprüfung Informatik 2005 Patrick Stürmlinger 1945 von John von Neumann vorgestellt rekursiv funktioniert nach dem Prinzip „Teile und herrsche“ betrachtet zu sortierende Daten als Liste teilt Daten in kleinere Listen und sortiert diese Teillisten werden wieder zusammengeführt

Funktionsweise Listen werden so weit wie möglich geteilt Präsentationsprüfung Informatik 2005 Patrick Stürmlinger Listen werden so weit wie möglich geteilt paarweise Vermischung der Teile größere, sortierte Teillisten entstehen Teillisten werden nacheinander zu einer Liste kombiniert sortierte Gesamtliste

Der Algorithmus Präsentationsprüfung Informatik 2005 Patrick Stürmlinger bestehend aus rekursiver Funktion mergesort() und Mischfunktion merge() mergeSort(int[] liste, int links, int rechts): rekursiv Aufruf von merge() merge(int[] listeA, int[] listeB, int links, int mitte, int rechts):

Der Algorithmus Präsentationsprüfung Informatik 2005 Patrick Stürmlinger bestehend aus rekursiver Funktion mergesort() und Mischfunktion merge() mergeSort(int[] liste, int links, int rechts): rekursiv Aufruf von merge() merge(int[] listeA, int[] listeB, int links, int mitte, int rechts):

Der Algorithmus Präsentationsprüfung Informatik 2005 Patrick Stürmlinger bestehend aus rekursiver Funktion mergesort() und Mischfunktion merge() mergeSort(int[] liste, int links, int rechts): rekursiv Aufruf von merge() merge(int[] listeA, int[] listeB, int links, int mitte, int rechts):

Der Algorithmus Präsentationsprüfung Informatik 2005 Patrick Stürmlinger bestehend aus rekursiver Funktion mergesort() und Mischfunktion merge() mergeSort(int[] liste, int links, int rechts): rekursiv Aufruf von merge() merge(int[] listeA, int[] listeB, int links, int mitte, int rechts):

Der Algorithmus Präsentationsprüfung Informatik 2005 Patrick Stürmlinger bestehend aus rekursiver Funktion mergesort() und Mischfunktion merge() mergeSort(int[] liste, int links, int rechts): rekursiv Aufruf von merge() merge(int[] listeA, int[] listeB, int links, int mitte, int rechts):

Der Algorithmus Präsentationsprüfung Informatik 2005 Patrick Stürmlinger bestehend aus rekursiver Funktion mergesort() und Mischfunktion merge() mergeSort(int[] liste, int links, int rechts): rekursiv Aufruf von merge() merge(int[] listeA, int[] listeB, int links, int mitte, int rechts):

Der Algorithmus Präsentationsprüfung Informatik 2005 Patrick Stürmlinger bestehend aus rekursiver Funktion mergesort() und Mischfunktion merge() mergeSort(int[] liste, int links, int rechts): rekursiv Aufruf von merge() merge(int[] listeA, int[] listeB, int links, int mitte, int rechts):

Der Algorithmus Präsentationsprüfung Informatik 2005 Patrick Stürmlinger bestehend aus rekursiver Funktion mergesort() und Mischfunktion merge() mergeSort(int[] liste, int links, int rechts): rekursiv Aufruf von merge() merge(int[] listeA, int[] listeB, int links, int mitte, int rechts):

Der Algorithmus Präsentationsprüfung Informatik 2005 Patrick Stürmlinger bestehend aus rekursiver Funktion mergesort() und Mischfunktion merge() mergeSort(int[] liste, int links, int rechts): rekursiv Aufruf von merge() merge(int[] listeA, int[] listeB, int links, int mitte, int rechts):

Implementierung mergeSort(…) Präsentationsprüfung Informatik 2005 Patrick Stürmlinger mergeSort(…) void mergeSort(int[] liste, int[] hilfsListe, int lo, int hi){ if (links<rechts) { int mitte=(links+rechts)/2; mergeSort(liste, hilfsListe, links, mitte); mergeSort(liste, hilfsListe, mitte+1, rechts); merge(liste, hilfsListe, links, mitte, rechts); }

Implementierung mergeSort(…) merge() Präsentationsprüfung Informatik 2005 Patrick Stürmlinger mergeSort(…) merge() void merge(int[] listeA, int[] listeB, int links, int mitte, int rechts) { int i, j, k; // beide Hälften von listeA in Hilfsarray listeB kopieren for (i=links; i<=rechts; i++) listeB[i] = listeA[i]; i=links; j=mitte+1; k=links; // jeweils das nächstgrößte Element zurückkopieren while (i<=mitte && j<=rechts) if (listeB[i] <= listeB[j]) listeA[k++]=listeB[i++]; else listeA[k++]=listeB[j++]; // Rest der vorderen Hälfte falls vorhanden zurückkopieren while (i<=mitte) } void mergeSort(int[] liste, int[] hilfsListe, int lo, int hi){ if (links<rechts) { int mitte=(links+rechts)/2; mergeSort(liste, hilfsListe, links, mitte); mergeSort(liste, hilfsListe, mitte+1, rechts); merge(liste, hilfsListe, links, mitte, rechts); }

Vor- und Nachteile stabil Präsentationsprüfung Informatik 2005 Patrick Stürmlinger stabil im ungünstigsten Fall eine Laufzeit proportional zu n: n*log(n) (siehe später im Kurs) kann Daten sequentiell abarbeiten ein zu n proportionaler zusätzlicher Speicher wird benötigt

Vergleich mit Insertionsort Präsentationsprüfung Informatik 2005 Patrick Stürmlinger Insertionsort Mergesort einfach zu implementieren stabil bei großen Datenmengen wenig effizient bei vorsortierten Datenmengen effizient wenig Speicherbedarf (in-place) kompliziert stabil bei großen Datenmengen effizient bei vorsortierten Datenmengen ineffizient zu n proportionaler Speicherbedarf (out-of-place)

Quellen Algorithmen - Eine Einführung http://de.wikipedia.org/ Präsentationsprüfung Informatik 2005 Patrick Stürmlinger Algorithmen - Eine Einführung Autoren: Cormen, Leierson, Rivest und Stein Verlag: Oldenbourg Erscheinungsdatum: 8. September 2004 http://de.wikipedia.org/ „mergesort“ „insertionsort“ Stand: 17.06.2005 http://www.linux-related.de/index.html?/coding/sort/sort_merge.htm