java.util.Arrays.sort(/* int[], char[], short[], byte[], boolean[] */)
se implementa como un 'ordenamiento rápido sintonizado' en lugar de una clasificación de radix.
Hice una comparación de velocidad hace un tiempo, y con algo como n> 10000, la clasificación de radix siempre fue más rápida. ¿por qué?
Back2dos lo ha dicho todo, solo intentaré aclarar más el punto que creo que es el más importante:
La clasificación por radix solo puede ordenar los valores primitivos reales que están contenidos dentro de la matriz, en función de sus patrones de dígitos binarios. En escenarios reales de ingeniería de software del mundo real, este caso casi nunca se encuentra . Lo que solemos hacer con mucha más frecuencia es ordenar matrices de estructuras de datos más complejas (no primitivas), y algunas veces clasificamos matrices de índices a otras entidades.
Ahora, una matriz de índices para otras entidades es de hecho una matriz de primitivas, pero el orden de clasificación es proporcionado por la interfaz del comparador (y / o delegado en C #) que compara no los índices, sino las entidades indexadas por los índices. Por lo tanto, el orden de clasificación no tiene absolutamente ninguna relación con el orden de los valores de las primitivas y, por lo tanto, la clasificación por radix es absolutamente inútil para este escenario.
Un ejemplo:
Tenemos una serie de cadenas: [0] = "Mike", [1] = "Albert", [2] = "Zoro". Luego declaramos una matriz de índices para esas cadenas: [0] = 0, [1] = 1, [2] = 2. Luego, clasificamos la matriz de índices, pasándole un comparador que no compara los índices en sí, sino las cadenas reales a las que se refieren estos índices. Después de ordenar, la matriz resultante de índices se verá así: [0] = 1, [1] = 0, [2] = 2. Como puede ver, este orden no tiene nada que ver con los patrones binarios de los valores contenidos en la matriz, y sin embargo, al atravesar esta matriz de índices y obtener cada cadena correspondiente, visitamos las cadenas en orden ordenado.
fuente