rekursion:quicksort:start
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
rekursion:quicksort:start [2024/09/08 13:32] – angelegt Martin Pabst | rekursion:quicksort:start [Unbekanntes Datum] (aktuell) – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1 | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
- | ====== Quicksort ====== | ||
- | Hier ein Video, das den Algorithmus erklärt: | ||
- | {{youtube> | ||
- | < | ||
- | |||
- | <div class=" | ||
- | |||
- | <script type=" | ||
- | // Quelle: https:// | ||
- | |||
- | int[] zahlen = { 5, 5, 12, 4, 7, 8, 10, 9, 6, 3 }; | ||
- | |||
- | Quicksort qs = new Quicksort(); | ||
- | qs.sort(zahlen); | ||
- | |||
- | qs.ausgabe(zahlen); | ||
- | |||
- | |||
- | class Quicksort { | ||
- | |||
- | void sort(int[] daten) { | ||
- | sortRekursiv(daten, | ||
- | } | ||
- | |||
- | void sortRekursiv(int[] daten, int indexLinks, int indexRechts) { | ||
- | |||
- | if(indexLinks >= indexRechts) return; | ||
- | |||
- | int pivot = daten[indexLinks]; | ||
- | |||
- | int pointerLinks = indexLinks + 1; | ||
- | int pointerRechts = indexRechts; | ||
- | |||
- | while (pointerLinks < pointerRechts) { | ||
- | |||
- | while (pointerLinks < indexRechts && | ||
- | | ||
- | pointerLinks++; | ||
- | } | ||
- | | ||
- | while (pointerRechts > pointerLinks && | ||
- | | ||
- | pointerRechts--; | ||
- | } | ||
- | |||
- | | ||
- | int z = daten[pointerLinks]; | ||
- | daten[pointerLinks] = daten[pointerRechts]; | ||
- | daten[pointerRechts] = z; | ||
- | } | ||
- | |||
- | } | ||
- | |||
- | // Pointer rechts konnte keinen Wert <= Pivot finden, | ||
- | // => Pointer links ist zu weit nach rechts gewandert | ||
- | if(daten[pointerLinks] > pivot) { | ||
- | | ||
- | } | ||
- | |||
- | // Falls das linke Teilintervall länger als 1 Element ist, | ||
- | // dann ist das Pivotelement das größte darin. | ||
- | // => Tausche es an den rechten Rand des linken | ||
- | // Teilintervalls und verschmälere das Intervall rechts um 1 | ||
- | if(pointerLinks > indexLinks) { | ||
- | int z = daten[pointerLinks]; | ||
- | | ||
- | | ||
- | |||
- | | ||
- | |||
- | } | ||
- | | ||
- | sortRekursiv(daten, | ||
- | |||
- | } | ||
- | |||
- | |||
- | void ausgabe(int[] daten) { | ||
- | for (int i = 0; i < daten.length; | ||
- | | ||
- | } | ||
- | } | ||
- | |||
- | |||
- | } | ||
- | |||
- | |||
- | </ | ||
- | </ | ||
- | </ | ||
rekursion/quicksort/start.1725802348.txt.gz · Zuletzt geändert: 2024/09/22 04:37 (Externe Bearbeitung)