Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:start [27.01.2022 15:11] – [Arrays mit zwei oder mehr Elementen] sbel | faecher:informatik:oberstufe:algorithmen:sortieren:quicksort:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Quicksort ====== | ||
- | |||
- | <WRAP center round info 95%> | ||
- | Um den Quicksort Algorithmus verstehen und implementieren zu können, sollte man die Abschnitte [[..: | ||
- | </ | ||
- | |||
- | 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 | ||
- | '' | ||
- | |||
- | ===== Modellvorstellung ===== | ||
- | |||
- | 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 " | ||
- | |||
- | {{ : | ||
- | |||
- | 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 gehen vor, wie oben angedacht: | ||
- | * Pivotelement wählen (erstes Element des Arrays) | ||
- | * Partitionieren in //Elemente kleiner als Privot//, //Pivot// und //Elemente größer/ | ||
- | |||
- | {{ : | ||
- | |||
- | Das sortierte Array erhält man anschließend zuverlässig als: | ||
- | |||
- | |||
- | |||