¿Por qué no puede haber un algoritmo de clasificación que tenga el mejor y el peor caso de N tiempo de ejecución (por ejemplo, lineal)?

No es posible ordenar más rápido que el tiempo Ω (nlogn) suponiendo que el algoritmo se base en hacer comparaciones de 2 vías. El argumento se basó en mostrar que cualquier clasificación basada en la comparación podría representarse como un árbol de decisión, el árbol de decisión debe tener al menos n! hojas, para distinguir entre las n! diferentes permutaciones en las cuales las claves podrían ingresarse, y por lo tanto su altura debe ser al menos lg (n!) ∈ Ω (nlgn).

Este límite inferior implica que si esperamos ordenar los números más rápido que en el tiempo O (nlogn), no podemos hacerlo haciendo solo comparaciones. Ahora, la cuestión de si es posible ordenar sin el uso de comparaciones. Responden que sí, pero solo bajo circunstancias muy restrictivas.

Ejemplo: orden de conteo

El ordenamiento de conteo supone que cada entrada es un número entero en el rango de 1 a k. El algoritmo se ordena en tiempo Θ (n + k). Si se sabe que k es Θ (n), entonces esto implica que el algoritmo de clasificación resultante es el tiempo Θ (n). Verifique el recuento para los detalles de implementación.

Hay algoritmos de clasificación que se ejecutan en tiempo lineal en los mejores y peores casos. Radix sort es un ejemplo sencillo de uno.

Se trata específicamente de algoritmos de clasificación basados ​​en la comparación , es decir, aquellos que operan comparando pares de elementos, que nunca pueden ser mejores que O (n * log (n)).
Aquí hay una larga explicación de por qué es eso (ver la respuesta superior):
¿Cuáles son las reglas para la “barrera Ω (n log n)” para la clasificación de algoritmos? – Desbordamiento de pila

La complejidad computacional de un algoritmo depende de los tipos de operaciones que puede realizar. Es un resultado comprobado [Página en bowdoin.edu] que cualquier algoritmo de clasificación basado en la comparación debe hacer al menos el orden de las comparaciones nlogn. Cuando le damos más poder a nuestros algoritmos (o restringimos el tipo de datos que esperamos se clasifiquen), ¡obtenemos los algoritmos que realmente pueden clasificarse en tiempo lineal!
Algunos ejemplos son: orden de conteo y orden de Radix.