Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung |
faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:start [27.06.2023 15:08] – [Arrays mit zwei oder mehr Elementen] Frank Schiebel | faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:start [24.01.2024 15:34] (aktuell) – [Modellvorstellung] Marco Kuemmel |
---|
</WRAP> | </WRAP> |
| |
Quicksort ist ein sehr schnellet Sortieralgorithmus. Er kommt in der Praxis | Quicksort ist ein sehr schneller 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 | 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]]. | ''qsort''. Quicksort verwendet ein [[..:..:teile_und_herrsche:start|Teile-und-herrsche-Prinzip]]. |
| |
===== Modellvorstellung ===== | ===== Modellvorstellung ===== |
| |
Stell dir vor die Schüler der 7a wollen sich wie die Orgelpfeifen der Größe nach geordnet aufstellen: | 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 |}} | {{ :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**. | 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 |}} | {{ :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: | 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 |}} | {{ :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. | 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 stehen 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. |
| |
{{ :faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:teilprobleme.drawio.png |}} | {{ :faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:teilprobleme.drawio.png |}} |
Führe das Verfahren mit Stift und Papier zu Ende, bis du die Schüler nach Körpergröße sortiert hast. | Führe das Verfahren mit Stift und Papier zu Ende, bis du die Schüler nach Körpergröße sortiert hast. |
| |
**Frage:** Was ist der Basisfall beim sortieren der Schülergruppen? Wann kannst du also direkt ohne weitere Überlegung eine sortierte Schülergruppe zurückgeben? | **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 | ++++ Antwort: | Leere Arrays und Arrays mit nur einem Element stellen den Basisfall dar. Du |