Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:start [31.01.2022 15:30] – [Arrays mit mehr Elementen] sbel | faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:start [24.01.2024 15:34] (aktuell) – [Modellvorstellung] Marco Kuemmel | ||
---|---|---|---|
Zeile 5: | Zeile 5: | ||
</ | </ | ||
- | Quicksort ist ein sehr schnellet | + | Quicksort ist ein sehr schneller |
- | häufig | + | häufig |
'' | '' | ||
===== 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: |
{{ : | {{ : | ||
- | Zunächst wählt man die erste Person als " | + | Zunächst wählt man die erste Person als " |
{{ : | {{ : | ||
- | 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: |
{{ : | {{ : | ||
- | Das Pivotelement scheidet jetzt aus dem Verfahren aus, es bleibt an dem Platz, an dem es sich jetzt befindet. Jetzt haben wir zwei " | + | Das Pivotelement scheidet jetzt aus dem Verfahren aus, es bleibt an dem Platz, an dem es sich jetzt befindet. Jetzt haben wir zwei " |
{{ : | {{ : | ||
Zeile 40: | Zeile 40: | ||
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 | + | **Frage:** Was ist der Basisfall beim Sortieren |
++++ 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 | ||
Zeile 79: | Zeile 79: | ||
{{: | {{: | ||
=== (A2) === | === (A2) === | ||
- | Untersuche, ob die Auswahl des Pivotelements einen Einfluss auf das Ergebnis des Sortiervorgangs hat, indem du das Verafhren | + | Untersuche, ob die Auswahl des Pivotelements einen Einfluss auf das Ergebnis des Sortiervorgangs hat, indem du das Verfahren |
Das sortierte Array erhält man anschließend zuverlässig als: | Das sortierte Array erhält man anschließend zuverlässig als: | ||
Zeile 93: | Zeile 93: | ||
- | Betrachten wir nun ein Array mit 4 Elementen: | + | Betrachten wir nun ein Array mit **4 Elementen**: |
{{ : | {{ : | ||
Zeile 100: | Zeile 100: | ||
{{ : | {{ : | ||
+ | |||
+ | Das längste dabei auftretende " | ||
+ | |||
+ | Diese Überlegung gilt nun analog für alle längeren Arrays: Nach der Partitionierung eines Arrays der Länge 5 hat das längste Unterarray die Länge 4. Wir wissen aber, dass wir ein Array der Länge 4 sortieren können (s.o.). Ein Array der Länge 6 hat nach der Partitionierung Unterarrays, | ||
+ | |||
+ | <WRAP center round tip 95%> | ||
+ | Es ist also möglich, Arrays mit beliebig vielen Elementen auf diese Weise sortieren. Dabei spielt es **keine Rolle, welches Element man als Pivotelement wählt**. Dieses Sortierverfahren heißt **Quicksort**. | ||
+ | </ | ||
+ | ==== Quicksort: Pseudocode ==== | ||
+ | |||
+ | Damit sieht der Quicksort-Algorithmus im Pseudocode folgendermaßen aus: | ||
+ | |||
+ | < | ||
+ | quicksort(array): | ||
+ | wenn laenge(array) < 2: | ||
+ | return array | ||
+ | sonst: | ||
+ | pivot = array[0] | ||
+ | array kleiner | ||
+ | array groesser = (Alle Elemente von Array, die größer sind als pivot) | ||
+ | return quicksort(kleiner) + pivot + quicksort(groesser) | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A3) === | ||
+ | |||
+ | Identifiziere im Pseudocode den '' | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A4) === | ||
+ | |||
+ | Verwende die Vorlage https:// | ||
+ | |||
+ | * Implementiere eine Methode '' | ||
+ | * Teste deine Methode mit unterschiedlichen Arrays - mit verschiedenen Wertebereichen und Längen. Kontrolliere die Ausgaben. | ||
+ | |||
+ | ---- | ||
+ | {{: | ||
+ | === (A5) === | ||
+ | Implementiere eine Methode quicksort, im Musiklisten-Projekt (https:// |