Lomuto vs Hoare
Partycja Lomuto cierpi podczas sortowania równych kluczy, podczas gdy partycja Hoare nie.
Oba schematy podziału cierpią jednakowo, gdy stosuje się oś oddaloną od mediany.
Miara nieporządku
Miara nieporządku do wyboru na potrzeby szybkiego sortowania jest prosta.
Odp .: Jak daleko od mediany jest ustalony punkt obrotu w porównaniu do danych losowych?
Jeśli nalegasz na użycie partycji Lomuto i zakładasz, że dozwolone są zduplikowane wartości, musisz dodać następujący test na losowość:
B: Ile jest zduplikowanych elementów w porównaniu z losowym.
Oczywiście głupio jest zakładać, że duplikaty są dozwolone w twoim zestawie danych i nadal oceniać partycję Lomuto, więc prawdopodobnie powinieneś albo wcześniej wyeliminować duplikaty, albo przejść na partycję Hoare lub założyć, że duplikaty są rzadkie.
Oba miary są trywialne do oszacowania za pomocą statystyki.
Możemy wykluczyć dane patologiczne.
Wszelkie inne odchylenia od losowości nie będą miały znaczenia dla celów analizy szybkiego sortowania. Tak długo, jak oś jest blisko mediany, będzie dobrze działać na wszystkich danych, które nie są patologiczne.
Odległość od losowości musiałaby być naprawdę duża, aby mogła być patologicznie szybka, więc możemy to wykluczyć.
Nigdy nie używaj żadnych ustalonych elementów przestawnych w prawdziwym kodzie
Pamiętaj, że jeśli piszesz prawdziwy kod za pomocą ustalonego elementu przestawnego *) (cokolwiek to może być), narażasz się na atak typu „odmowa usługi”, ponieważ osoba atakująca może wstawić wartość patologiczna tylko w tym momencie, dlatego zawsze należy wybrać element losowy jako oś przestawną.
*) lub wiele osi przestawnych, jeśli wybierzesz najlepszą z x osi przestawnych.