Que yo sepa, no existe un algoritmo de peor caso que resuelva el siguiente problema:
Dada una secuencia de longitud consiste en enteros finitos, encuentre la permutación donde cada elemento es menor o igual que su sucesor.
¿Pero hay una prueba de que no existe, en el modelo de cómputo transdicotómico ?
Tenga en cuenta que no estoy limitando el rango de los enteros. Tampoco estoy limitando las soluciones a los tipos de comparación.
Respuestas:
Los enteros se pueden clasificar de manera estable en tiempo con O ( 1 ) espacio adicional.O ( n ) O ( 1 ) Más precisamente, si tiene enteros en el rango [ 1 , n c ] , se puede ordenar en tiempo O (n).norte [ 1 , nC]
Esto solo se demostró hace un par de años por un equipo que incluía al fallecido Mihai Pătrașcu (lo que no debería sorprender a nadie que esté familiarizado con su trabajo). Es un resultado notable que me sorprende que más personas desconozcan, porque significa que el problema de ordenar enteros está (teóricamente) resuelto.
Existe un algoritmo práctico (dado en el documento anterior) si se le permite modificar claves. Básicamente, puede comprimir enteros ordenados más de lo que puede comprimir enteros no clasificados, y el espacio adicional que gana es exactamente igual a la memoria adicional necesaria para ordenar los radix. También proporcionan un algoritmo poco práctico que admite claves de solo lectura.
fuente
Para enteros, puede usar la clasificación Radix . Crea cubos y luego ordena una lista de números en donde b es un límite superior del tamaño en bits de cualquier número entero, ynO ( b n ) si norte el número de elementos para ordenar.
Si no hay un límite superior en el tamaño de sus enteros, entonces no creo que haya ningún algoritmo de clasificación de tiempo lineal conocido.
fuente