Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung Nächste ÜberarbeitungBeide Seiten, nächste Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:start [27.01.2022 08:16] – [Modellvorstellung] sbel | faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:start [27.01.2022 15:09] – [Arrays mit zwei oder mehr Elementen] sbel | ||
---|---|---|---|
Zeile 14: | Zeile 14: | ||
{{ : | {{ : | ||
+ | |||
+ | 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: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Das Pivotelement scheidet jetzt aus dem Verfahren aus, es bleibt an dem Platz, an dem es sich jetzt befindet. Jetzt haben wir zwei " | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | 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/ | ||
+ | |||
+ | Dieses Vorgehen wird jetzt wiederholt bis der Basisfall eintritt. | ||
+ | |||
+ | **Frage:** Was ist der Basisfall beim sortieren der Schülergruppen? | ||
+ | |||
+ | ++++ 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 ++++ | ||
+ | |||
+ | ===== Quicksort ===== | ||
+ | |||
+ | ==== Leere Arrays und solche mit nur einem Element ==== | ||
+ | |||
+ | Wir legen den Basisfall zugrunde: Wenn unser Array leer ist oder nur ein Element hat, ist es sortiert und kann direkt als sortiertes Array zurückgegeben werden: | ||
+ | |||
+ | <code java> | ||
+ | public ArrayList< | ||
+ | | ||
+ | | ||
+ | } | ||
+ | [...] | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== Arrays mit zwei oder mehr Elementen ==== | ||
+ | |||
+ | Arrays mit **zwei Elementen** sind ebenfalls einfach zu bearbeiten: Man muss lediglich die beiden Elemente vergleichen und wenn nötig vertauschen, | ||
+ | |||
+ | Spannend wird es, wenn das Array drei Elemente hat: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | Wir egehen vor, wie oben angedacht: Pivotelement wählen (erstes Element des Arrays), partitionieren in //Elemente kleiner als Privot//, //Pivot// und //Elemente größer/ | ||
+ | |||
+ | {{ : | ||
+ | |||
+ |