这里是一种用于找到n(奇数)个不同数字的数组的中值的算法。 什么是平均值。该算法的运行时间
1. Uniformly at random, pick an entry i in A
2. Determine s, the number of entries in A that are smaller than i
3. If s = (n − 1)/2, then return i
4. Else goto 1
我变得像theta(无限),这是不可能的。有人能帮助我吗?
答案 0 :(得分:1)
我认为您实际上无法计算此算法的平均运行时间,因为它有时可能无法完成 - 即。你对无限时间的回答是正确的。
但是,您可以使用概率来确定“预期”时间。你的问题基本上类似于“我赢得之前应该购买多少彩票?”随机选择正确中位数的概率是1 / n。所以为了达到P = 1,你会期望选择n次。鉴于确定随机选择是否实际上是中位数的时间需要将其与每个其他条目进行比较,预期的总时间将为O(n ^ 2),最佳情况为o(n),最差情况为o(无穷大) )。