Bogo-sort平均运行时解释

时间:2013-03-02 18:21:29

标签: algorithm sorting runtime average

有人可以详细解释bogosort的平均案例运行时间吗?

算法的Psuedocode:

while not isInOrder(deck):
    shuffle(deck)

2 个答案:

答案 0 :(得分:3)

n!个排列,其中只有一个是正确的(假设不同的元素)。因此,在挥手的意义上,您希望在大约O(n!)次迭代后选择正确的答案。 * 但每次shuffle / check操作本身都是O(n)。因此总体而言O(n.n!)

<小时/> *准确地说,您可以使用参数 p = 1 / n!建模为geometrically-distributed random variable。这个变量的期望值是 1 / p = n!

答案 1 :(得分:1)

执行操作的平均尝试次数与每次尝试成功的概率相反。

n!个方法来重排n元素。如果所有元素都是不同的,则只有一种方法产生排序输出。因此,排序随机播放的概率为1/n!,平均尝试次数为n!

每次洗牌需要O(n)次(假设Fisher-Yates洗牌或任何同样合理的事情)。

因此,时间复杂度为O(n!*n)