Rekursion mit Listen: Quicksort

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Klassen - Verkettete Liste -
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Einführung in die Programmierung Zusammenfassung
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Lineare Suche Divide-and-Conquer-Suche Kombinationssuche
Imperative Programmierung
der Universität Oldenburg
Sortieren mit Binären Bäumen
Java: Dynamische Datentypen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (04 – Entwurfsverfahren) Prof. Th. Ottmann.
Algorithmen und Datenstrukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) 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.
Algorithmen und Datenstrukturen
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
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.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.

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
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 10 Claudio Moraga; Gisbert Dittrich FBI Unido
IKG - Übung Diskrete Mathe I – Jörg Schmittwilken
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
Diskrete Mathematik I Vorlesung 9b AVL-Baum, Algorithmen.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Einführung in die Programmierung Anweisungen und Datentypen
Informatikunterricht mit Java
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Einfach verkettete Listen
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
1.2 Attribute und Methoden Aufbau einer Java-Klasse:
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
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.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
2.4 Rekursion Klassifikation und Beispiele
Einfach und doppelt verkettete Listen in JAVA by Jens Weibler
Sortieralgorithmen Greedy Sortieren: Sortieren durch Auswahl, Einfügen und Austauschen Divide-and-Conquer-Sortieren: Quicksort und merge sort Foliensatz.
Diskrete Mathematik II
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
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-
Binärer Suchbaum IV AVL-Baum I
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Binärer Suchbaum III- -AVL-Baum-
Binärer Baum, Binärer Suchbaum I
G. Gröger - Einführung in die Programmierung mit Java - 1. Semester - WS 03/041 Übungsaufgabe Ergänzt die Klasse Dreieck aus der Hausaufgabe um eine Methode,
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
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.
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Rekursion – Speicherverwaltung
 Präsentation transkript:

Rekursion mit Listen: Quicksort Diskrete Mathematik I Vorlesung 4a Rekursion mit Listen: Quicksort

Übersicht Das Prinzip der Rekursion Beispiel 2: QuickSort 1 Übersicht Das Prinzip der Rekursion Beispiel 2: QuickSort „Teile und Herrsche“ Programmkonstrukte von Java Quicksort: Umsetzung in Java Funktion „QuickSort“

Das Prinzip der Rekursion 2 Das Prinzip der Rekursion Eine rekursive Definition reduziert ein Problem auf ein kleineres Problem derselben Art. Eine rekursive Funktion setzt eine rekursive Definition in ein Programm um.

Beispiel 2: QuickSort einer der schnellsten Sortieralgorithmen 3 Beispiel 2: QuickSort einer der schnellsten Sortieralgorithmen Grundidee: „Teile und Herrsche“ (“divide and conquer“) - ein wichtiges Paradigma für geometrische Algorithmen ein rekursiver Algorithmus mit einer rekursiven Datenstruktur

Sortierliste A mit n Elementen 4 „Teile und Herrsche“ Sortierliste A mit n Elementen Wahl eines Wertes W der Liste A 8x

„Teile und Herrsche“ W Konstruktion einer Partitionierung der Liste A 4 „Teile und Herrsche“ W Konstruktion einer Partitionierung der Liste A 8x

4 „Teile und Herrsche“ K G W alle Elemente von K sind <= W (noch unsortiert) alle Elemente von G sind >= W (noch unsortiert) Sortieren von K und G durch Rekursion A 8x

Funktion „QuickSort“ Liste QuickSort (Liste InList) { 5 Funktion „QuickSort“ Liste QuickSort (Liste InList) { if(InList.IstLeer()) return new Liste(); int W = InList.Kopf().GibWert(); Liste NewInList = InList.Body(); Liste K = NewInList.Kleiner(W); Liste G = NewInList.Groesser(W); Liste K1 = QuickSort(K); Liste G1 = QuickSort(G); K1.FuegeAn(W); K1.Concat(G1); return K1; } lokale Variablen K W G

Methoden der Klasse "Liste" 6 Methoden der Klasse "Liste" class Liste { ................... void FügeAn(int an) {..} boolean IstLeer(){return kopf == null;} Element Kopf() {return kopf;} Liste Body() { Liste NeueListe = new Liste(); NeueListe.kopf = kopf.GibWeiter(); NeueListe.fuß = fuß; return NeueListe;} . Fortsetzung nächste Seite

Methoden der Klasse "Liste" (Fortsetzung) 7 Methoden der Klasse "Liste" (Fortsetzung) Liste Kleiner(int H){ Liste NeueListe = new Liste(); Element zeiger = kopf; while(zeiger != null){ if(zeiger.GibWert() =< H) NeueListe.FügeAn(zeiger.GibWert()); zeiger = zeiger.GibWeiter();} } Liste Groesser(int H){...} void Concat(Liste ZweiteListe){ ... als Übungsaufgabe ....

Methoden der Klasse "Liste" 8 Methoden der Klasse "Liste" Element Kopf(): liefert das erste Element (Kopf) der Liste Liste Body(): liefert Rumpf der Liste Liste Groesser(int v): liefert eine neue Liste mit Elementen, die größer als v sind Liste Kleiner(int v): Liefert eine neue Liste mit Elementen, die kleiner als v sind boolean IstLeer(): liefert true, wenn Liste leer ist, sonst false void FügeAn(int v): fügt ein Element mit dem Wert v am Ende der Liste an void Concat(Liste L): Verbindet die Liste mit der Liste L