Nas pp.296 Algoritmo de Sedgewick & et al. , 4ª edição, o autor escreveu:
O valor ideal do ponto de corte M depende do sistema, mas qualquer valor entre 5 e 15 provavelmente funcionará bem na maioria das situações.
Mas não entendo o que significa que o valor de corte é dependente do sistema, porque o desempenho de um algoritmo é medido com base no número de operações que ele executa e não independe da velocidade do processador do computador?
Tenho uma 2ª edição, de 1984. Na página 112, sob o título "Pequenos subarquivos", em uma discussão sobre Quicksort:
Há alguns pontos aqui.
Você está certo: o desempenho de um algoritmo é medido com base no número de operações que ele executa, não na velocidade do processador.
Como expliquei na minha resposta a uma pergunta semelhante , o Quicksort é um algoritmo extremamente complicado quando comparado ao Insertion sort. Há uma sobrecarga considerável de contabilidade envolvida. Ou seja, há certos custos fixos com o Quicksort, independentemente de quão grande ou pequeno seja o subarray que você está classificando. À medida que o array fica menor, a porcentagem de tempo gasto em sobrecarga aumenta.
Insertion sort é um algoritmo de classificação muito simples. Há muito pouca sobrecarga de contabilidade. Insertion sort pode ser mais rápido que Quicksort para arrays pequenos porque Insertion sort na verdade executa menos operações que Quicksort quando os arrays são muito pequenos. A variação (como diz o texto, de 5 a 25) depende das implementações exatas do algoritmo.
O livro de Sedgewick, assim como muitos outros textos de algoritmos, frequentemente confunde a linha entre o teórico e o prático. Acho que é bom manter o prático em mente, mas ou o autor deve deixar claro quando estiver falando sobre desempenho real e desempenho teórico , ou o instrutor deve esclarecer isso em sala de aula.