faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:start

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
Nächste ÜberarbeitungBeide Seiten, nächste Überarbeitung
faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:start [26.01.2022 22:28] – angelegt sbelfaecher:informatik:oberstufe:algorithmen:sortieren:quicksort:start [27.01.2022 14:44] – [Modellvorstellung] sbel
Zeile 1: Zeile 1:
 ====== Quicksort ====== ====== Quicksort ======
  
-Um den Quicksort Algorithmus verstehen und implementieren zu können, sollte man die Abschnitte [[..:rekursion:start|Rekursion]] und das [[..:teile_und_herrsche:start|Teile-und-Herrsche-Prinzip]] bearbeitet haben.+<WRAP center round info 95%> 
 +Um den Quicksort Algorithmus verstehen und implementieren zu können, sollte man die Abschnitte [[..:..:rekursion:start|Rekursion]] und das [[..:..:teile_und_herrsche:start|Teile-und-Herrsche-Prinzip]] bearbeitet haben. 
 +</WRAP> 
 + 
 +Quicksort ist ein sehr schnellet Sortieralgorithmus. Er kommt in der Praxis 
 +häufig zum Einsatz. Zahlreiche Standardbibliotheken verschiedener Programmiersprachen enthalten Methoden um zum Beispiel Arrays zu sortieren, die in als Quicksort implementiert sind. Zum Beispiel hat die  Standardbibliothek der Programmiersprache C eine Funktion namens 
 +''qsort''. Quicksort verwendet ein [[..:..:teile_und_herrsche:start|Teile-und-herrsche-Prinzip]]. 
 + 
 +===== Modellvorstellung ===== 
 + 
 +Stell dir vor die Schüler der 7a wollen sich wie die Orgelpfeifen der Größe nach geordnet aufstellen: 
 + 
 +{{ :faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:unsortiert.drawio.png |}} 
 + 
 +Zunächst wählt man die erste Person als "Vergleichsgröße" aus, der Fachbegriff für das Element, das als Vergleichselement verwendet wird ist **Pivotelement**. 
 + 
 +{{ :faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:pivot01.drawio_1_.png |}} 
 + 
 +Jetzt teilt man das Problem in zwei Unterprobleme auf: Alle Schülerinnen die kleiner als das Pivotelement sind stellen sich links davon auf, alle die größer oder gleich sind rechts: 
 + 
 +{{ :faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:split01.drawio.png |}} 
 + 
 +Das Pivotelement scheidet jetzt aus dem Verfahren aus, es bleibt an dem Platz, an dem es sich jetzt befindet. Jetzt haben wir zwei "kleinere" Sortierprobleme geschaffen: Die Schülerinnen, die links setehen sind ungeordnet, die größeren auf der rechten Seite ebenfalls. Auf jeden Fall -- auch im ungünstigsten((welches ist der ungünstigste Fall?)) -- sind die neuen Teilproblem(e) kleiner als das ursprüngliche Problem. 
 + 
 +In den beiden Teilmengen verfährt man jetzt wie gerade in der Ausgangsmenge:  
 + 
 +  * Pivotelement wählen (die erste Schülerin ganz links) 
 +  * Menge in zwei Teile teilen: Kleiner und größer/gleich Pivotelement 
 + 
 +Dieses Vorgehen wird jetzt wiederholt bis der Basisfall eintritt. 
 + 
 +**Frage:** Was ist der Basisfall beim sortieren der Schülergruppen? Wann kannst du also direkt ohne weitere Überlegung eine sortierte Schülergruppe zurückgeben? 
 + 
 +++++ Antwort: | Leere Arrays und Arrays mit nur einem Element stellen den Basisfall dar. Du 
 +kannst solche Arrays unverändert zurückgeben – es gibt nichts zu sortieren ++++ 
 + 
  • faecher/informatik/oberstufe/algorithmen/sortieren/quicksort/start.txt
  • Zuletzt geändert: 24.01.2024 16:34
  • von Marco Kuemmel