我有一份文件,上面写着给定代码的平均时间复杂度是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)
呢?这比最坏情况还高。我有什么遗漏吗?
编辑: 如果文档可能存在错误,那么以上代码的平均时间复杂度是多少,为什么?