Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Diskrete Mathe1 12345678 Diskrete Mathematik I Rekursion mit Listen: Quicksort Vorlesung 4a.

Ähnliche Präsentationen


Präsentation zum Thema: "Diskrete Mathe1 12345678 Diskrete Mathematik I Rekursion mit Listen: Quicksort Vorlesung 4a."—  Präsentation transkript:

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

2 Diskrete Mathe Das Prinzip der Rekursion Beispiel 2: QuickSort –Teile und Herrsche –Programmkonstrukte von Java –Quicksort: Umsetzung in Java –Funktion QuickSort Übersicht

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

4 Diskrete Mathe 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

5 Diskrete Mathe A 8x Teile und Herrsche Sortierliste A mit n Elementen Wahl eines Wertes W der Liste

6 Diskrete Mathe A 8x Teile und Herrsche W Konstruktion einer Partitionierung der Liste

7 Diskrete Mathe A 8x Teile und Herrsche KGW Sortieren von K und G durch Rekursion alle Elemente von K sind <= W (noch unsortiert) alle Elemente von G sind >= W (noch unsortiert)

8 Diskrete Mathe 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; } KGW lokale Variablen

9 Diskrete Mathe 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

10 Diskrete Mathe 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.... }

11 Diskrete Mathe 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


Herunterladen ppt "Diskrete Mathe1 12345678 Diskrete Mathematik I Rekursion mit Listen: Quicksort Vorlesung 4a."

Ähnliche Präsentationen


Google-Anzeigen