Apenas querendo saber por que Java
e .NET Framework
usa algoritmo de classificação diferente por padrão.
Em Java, Array.Sort()
usa o algoritmo Merge Sort por padrão e como Wikipedia.com diz:
Em Java, os métodos Arrays.sort () usam classificação de mesclagem ou uma classificação rápida ajustada, dependendo dos tipos de dados e, para eficiência da implementação, alterne para a classificação de inserção quando menos de sete elementos da matriz estiverem sendo classificados
No .NET Framework, a Classificação RápidaArray.Sort/List.Sort()
usa o algoritmo de classificação padrão ( MSDN ):
List.Sort () usa Array.Sort, que usa o algoritmo QuickSort. Essa implementação executa uma classificação instável; isto é, se dois elementos forem iguais, sua ordem poderá não ser preservada. Por outro lado, uma classificação estável preserva a ordem dos elementos que são iguais.
Observando a excelente tabela "Comparação de algoritmos" , podemos ver que os dois algoritmos têm um comportamento bastante diferente das perspectivas de pior caso e uso de memória:
Ambas Java
e .NET
são ótimas estruturas para o desenvolvimento de soluções corporativas, ambas possuem plataformas para desenvolvimento incorporado. Então, por que eles estão usando um algoritmo de classificação diferente por padrão, alguma opinião?