【发布时间】:2019-07-10 21:59:46
【问题描述】:
我有一个文档说给定代码的平均案例时间复杂度是 O(nlog2n)
Random r = new Random();
int k = 1 + r.nextInt(n);
for (int i = 0; i < n ; i += k);
我计算了最好和最坏的情况:
最佳情况,k = n 导致时间复杂度为O(1)。
最坏的情况,k = 1 导致时间复杂度为O(n)。
平均情况如何为 O(nlog2n),高于最坏情况。我错过了什么吗?
编辑: 文档可能容易出错,那么在这种情况下,上述代码的平均时间复杂度是多少,为什么?
【问题讨论】:
-
您确定您复制的问题正确吗?
-
可以,但文档可能容易出错。
-
看起来它可以是 O logN,如果你得到这样的 k 值。基本上,这取决于随机数是如何生成的。
-
@uneq95 ,是的 O(logn) 是有道理的,但我想要证明/一些解释。
-
@Saad 我的答案有证据。
标签: java algorithm time-complexity logarithm