有一种叫做bogobogosort的类型。首先,它检查前两个元素,并对它们进行bogosorts。接下来,它检查前三个,对它们进行bogosorts,依此类推。
如果该列表在任何时候都处于混乱状态,它将通过bogosorting前2个重新开始。常规bogosort的平均复杂度为O(N!)
,此算法的平均复杂度为O(N!1!2!3!...N!)
编辑:为了让您知道这个数字有多大,对于20
元素来说,该算法平均需要花费数3.930093*10^158
年,远远高于提议的宇宙热死亡数(如果发生)数10^100
年,
假设年份为365.242天,而计算机每秒执行250,000,000个32位整数运算,则合并排序大约需要.0000004
几秒钟,气泡排序.0000016
几秒钟和bogosort需要数308
年,139
几天,19
几小时,35
几分钟,22.306
几秒钟。
Edit2:此算法的速度不如“算法”奇迹排序那样慢,它可能像这种排序一样,在成功对20个元素进行排序之前会使计算机陷入黑洞,但是如果这样做,我会估计平均复杂度的2^(32(the number of bits in a 32 bit integer)*N)(the number of elements)*(a number <=10^40)
年,
由于重力加快了芯片移动的速度,并且存在2 ^ N个状态,即2^640*10^40
大约5.783*10^216.762162762
几年,但是如果列表开始排序,则其复杂度仅O(N)
比合并排序快,合并排序甚至仅为N log N在最坏的情况下。
EDIT3:这种算法实际上慢于奇迹的排序是大小变得非常大,说1000,因为我的算法将有一个运行时间2.83*10^1175546
年,而奇迹排序算法将有一个运行时间1.156*10^9657
年。