Hay un tipo que se llama bogobogosort. Primero, verifica los primeros 2 elementos y los bogos clasifica. A continuación, verifica los primeros 3, los bogos los ordena, y así sucesivamente.
Si la lista está fuera de servicio en cualquier momento, se reinicia al ordenar de nuevo los primeros 2. El bogosort regular tiene una complejidad promedio de O(N!)
, este algoritmo tiene una complejidad promedio deO(N!1!2!3!...N!)
Editar : para darle una idea de qué tan grande es este número, para los 20
elementos, este algoritmo lleva un promedio de 3.930093*10^158
años , muy por encima de la muerte por calor propuesta del universo (si sucede) de 10^100
años ,
mientras que la ordenación por fusión toma alrededor de .0000004
segundos , la ordenación por burbuja .0000016
segundos y el bogosort lleva 308
años , 139
días , 19
horas , 35
minutos , 22.306
segundos , suponiendo que un año sea 365,242 días y una computadora realiza 250,000,000 de operaciones de 32 bits por segundo.
Edit2 : este algoritmo no es tan lento como el milagro del "algoritmo", que probablemente, como este tipo, absorberá la computadora en el agujero negro antes de que clasifique con éxito 20 elementos, pero si lo hiciera, estimaría una complejidad promedio de 2^(32(the number of bits in a 32 bit integer)*N)(the number of elements)*(a number <=10^40)
años ,
dado que la gravedad acelera el movimiento alfa de las fichas, y hay 2 ^ N estados, que son 2^640*10^40
, o aproximadamente , 5.783*10^216.762162762
años , aunque si la lista comenzara ordenada, su complejidad solo sería O(N)
, más rápida que la fusión, que es solo N log N incluso En el peor de los casos.
Edit3 : este algoritmo es en realidad más lento que el tipo milagroso ya que el tamaño se hace muy grande, digamos 1000, ya que mi algoritmo tendría un tiempo de ejecución de 2.83*10^1175546
años , mientras que el algoritmo de tipo milagroso tendría un tiempo de ejecución de 1.156*10^9657
años .