Partition
Partition ordnet das Teilarray so, dass links Elemente <= Pivot und rechts Elemente >= Pivot liegen (Varianten differieren in Details). Der Pivot landet an seiner finalen Position.
Lomuto und Hoare sind gängige Schemata.
Wo gebraucht
Kern von Quicksort und von Selection (Quickselect). Dieselbe Idee steckt in Dutch-National-Flag-Partitionen und in In-Place-Umordnungen.
Vertiefung
Eine Partition ordnet einen Bereich so um, dass Werte auf verschiedenen Seiten eine Relation zum Pivot erfüllen. Lomuto führt typischerweise eine Grenze für den kleineren Bereich und einen Scanindex. Hoare bewegt zwei Zeiger von aussen nach innen und tauscht falsch liegende Paare.
Die Rückgabe hat je nach Schema eine andere Bedeutung. Bei Lomuto ist sie häufig eine Pivotposition, bei Hoare meist eine Trennstelle für zwei weitere Intervalle. Korrekte Rekursionsgrenzen müssen daher aus dem verwendeten Schema folgen und dürfen nicht zwischen Varianten gemischt werden.
Schwierigkeitsstufen
- Die Bereichsinvarianten eines Partitionsschemas verfolgen.
- Rückgabewert und rekursive Intervalle passend kombinieren.
- Verhalten bei vielen Werten gleich dem Pivot analysieren.
Fallstricke
Viele Quicksortfehler entstehen nicht im Vergleich, sondern durch inkonsistente Intervallkonventionen. Inklusive und exklusive Grenzen dürfen innerhalb einer Implementierung nicht unbemerkt wechseln.
Tasks
Card Info
- Topic: Algorithmen und Datenstrukturen
- Difficulty: Intermediate
- Completed: 0 users