Lomuto vs Hoare Die
Lomuto-Partition leidet beim Sortieren gleicher Schlüssel, die Hoare-Partition dagegen nicht.
Beide Partitionsschemata leiden gleichermaßen, wenn ein vom Median entfernter Drehpunkt verwendet wird.
Maß für die Störung
Das Maß für die Störung, das für die Zwecke der Quicksortierung ausgewählt werden soll, ist einfach.
A: Wie weit vom Median entfernt ist der feste Drehpunkt im Vergleich zu zufälligen Daten?
Wenn Sie auf der Verwendung der Lomuto-Partition bestehen und davon ausgehen, dass doppelte Werte zulässig sind, müssen Sie den folgenden Test gegen Zufälligkeit hinzufügen:
B: Wie viele doppelte Elemente gibt es im Vergleich zu zufälligen.
Natürlich ist es ziemlich dumm anzunehmen, dass doppelte Werte in Ihrem Datensatz zulässig sind und dennoch die Lomuto-Partition auswerten. Daher sollten Sie wahrscheinlich entweder vorher Duplikate entfernen oder zur Hoare-Partition wechseln oder davon ausgehen, dass Duplikate selten sind.
Beide Maßnahmen sind trivial zu quantifizieren.
Wir können pathologische Daten ausschließen.
Andere Abweichungen von der Zufälligkeit spielen für die Analyse von Quicksort keine Rolle. Solange sich der Pivot in der Nähe des Medians befindet, funktioniert er bei allen Daten, die nicht pathologisch sind, gut.
Der Abstand zum Zufall müsste in der Tat groß sein, um schnell-pathologisch zu sein, also können wir das ausschließen.
Verwenden Sie niemals feste Pivots in echtem Code.
Beachten Sie, dass Sie sich einem Denial-of-Service-Angriff öffnen , wenn Sie echten Code mit einem festen Pivot *) schreiben (was auch immer dieser Pivot sein mag), da ein Angreifer einen einfügen kann pathologischer Wert genau an diesem Punkt und daher sollten Sie immer ein zufälliges Element als Drehpunkt wählen.
*) oder mehrere Pivots, wenn Sie das Beste aus x Pivots auswählen.