De alguma forma, pensei sobre o quicksort ontem à noite e estava lendo sobre isso na Wikipedia. A parte interessante para mim foi: 'Se pudéssemos escolher consistentemente um pivô dos 50% médios, teríamos que dividir a lista no máximo. A escolha do pivô parece ser um possível problema do quicksort que pode levar a comportamento.
Minha idéia era: se em cada etapa se usasse a média da partição como pivô , isso poderia aumentar significativamente a velocidade. Especialmente depois de algumas etapas, quando os outliers estão em sua própria divisão da lista, a média e a mediana devem estar muito próximas umas das outras (mais uma vez, olhando para listas grandes). O tempo adicional durante cada etapa para calcular a média deve ser. Portanto:
Tempo estimado do Quicksort:
Tempo estimado de Quicksort_mean:
(5/3 é provavelmente uma estimativa conservadora da minha parte, também poderia estar mais próxima de 2, pois os subconjuntos devem ficar rapidamente sem discrepâncias). Portanto, a partir de 10.000 entradas, o Quicksort_mean seria (em média) mais rápido que o Quicksort. Além disso, nunca arriscaria ser, pois ele não aceita o elemento mínimo ou máximo da pilha.
Minha principal pergunta é: eu perdi alguma coisa? Eu tenho que admitir, eu nunca implementei o quicksort, então posso perder outras partes da coisa toda (armazenamento, etc.)