¿Por qué Java utiliza diferentes algoritmos de clasificación para diferentes tipos de datos?

El uso de clasificación rápida para matrices primitivas es una optimización del rendimiento.

Se supone que los algoritmos de clasificación de Java son estables . Es por eso que, para ordenar colecciones arbitrarias, utiliza timsort, que es un algoritmo de ordenación estable.

Sin embargo, dado que dos valores primitivos que son equivalentes nunca serán observablemente diferentes entre sí ( Integer.compare(a, b) == 0 si y solo si a == b , y los primitivos no tienen identidad o estado), no uno notará que ha utilizado un algoritmo de ordenación inestable para ordenar una matriz primitiva.

En realidad, Java utiliza el ordenamiento rápido de doble pivote para ordenar las matrices primitivas, lo que reduce la incidencia del rendimiento del peor caso de O (n²) de quicksort y, a menudo, es más rápido que el ordenamiento rápido simple.