随机排序的复杂性

时间:2015-03-02 00:44:49

标签: algorithm asymptotic-complexity

好的,这可能是对arr个不同整数的数组n进行排序的最差方式,但我想分析这个算法:

  1. 检查arr是否已排序。如果是这样,请返回。
  2. 随机置换arr
  3. 的元素
  4. 重复步骤1和2,直到有return
  5. Goofy的分拣程序是否有效? GoofySort的最佳案例是什么?在最好的情况下,运行时间是多少?什么是最坏的情况下运行时间?平均病例运行时间是多少?

2 个答案:

答案 0 :(得分:3)

这种称为Bogosort

  • 最好的情况是O(n):你的第一个shuffle返回了一个排序列表。如果这种情况适合任何体面的名单,你应该购买彩票。
  • 平均情况为O((n+1)!)
  • 最坏的情况是无限的。无法保证随机混洗将返回排序列表。毕竟它是随机的。

答案 1 :(得分:0)

您正在谈论bogosort算法..

回答你的问题:

  

GoofySort的最佳案例是什么?

在最好的情况下,数组已经排序,或者第一次随机化对其进行排序。

  

最佳情况下的运行时间是多少?

检查它的排序时间,或者洗牌所需的时间,以及检查两次排序的时间。

  

最糟糕的运行时间是什么?

它是无限的。你可以随机播放{1,3,2} => {3,1,2} => {1,3,2} => {3,1,2}永远。

  

平均病例运行时间是多少?

它是O((n + 1)!)(参见维基文章)。