En términos generales, existen los algoritmos de ordenación , como la ordenación por inserción, la ordenación por burbujas y la ordenación por selección, que normalmente debe usar solo en circunstancias especiales; Quicksort, que es el peor de los casos pero con bastante frecuencia con buenas constantes y propiedades y que puede usarse como un procedimiento de clasificación de propósito general; los algoritmos , como merge-sort y heap-sort, que también son buenos algoritmos de clasificación de propósito general; y los algoritmos de clasificación , o lineales, para listas de enteros, como radix, cubetas y tipos de conteo, que pueden ser adecuados dependiendo de la naturaleza de los enteros en sus listas.O ( n 2 ) O ( n log n ) O ( n log n ) O ( n )O ( n2)O ( n2)O ( n logn )O ( n logn )O ( n )
Si los elementos en su lista son tales que todo lo que sabe sobre ellos es la relación de orden total entre ellos, entonces los algoritmos de clasificación óptimos tendrán complejidad . Este es un resultado bastante bueno y uno para el que debería poder encontrar fácilmente los detalles en línea. Los algoritmos de ordenación lineal explotan más información sobre la estructura de los elementos que se ordenarán, en lugar de solo la relación de orden total entre los elementos.Ω ( n logn )
Aún más en general, la optimización de un algoritmo de clasificación depende íntimamente de los supuestos que puede hacer sobre el tipo de listas que va a ordenar (así como el modelo de máquina en el que se ejecutará el algoritmo, lo que puede hacer una clasificación deficiente) los algoritmos son la mejor opción; considere la posibilidad de clasificar burbujas en máquinas con una cinta para almacenamiento). Cuanto más fuertes sean sus suposiciones, más esquinas podrá cortar su algoritmo. Bajo suposiciones muy débiles acerca de cuán eficientemente puede determinar la "clasificación" de una lista, la complejidad óptima en el peor de los casos puede ser incluso .Ω ( n ! )
Esta respuesta solo trata las complejidades. Los tiempos de ejecución reales de las implementaciones de algoritmos dependerán de una gran cantidad de factores que son difíciles de explicar en una sola respuesta.