【发布时间】:2019-07-27 06:27:04
【问题描述】:
在下面的循环中,复杂度是 O(1) 还是 O(n)?
for(int j = 0; j < Math.random() * 1000 + 1; j++)
我不知道它会通过循环运行的次数,所以不应该是 O(n) 吗?
【问题讨论】:
-
请格式化您的代码
-
它的 o(1) 因为 n 是输入的数量。没有输入。您的代码将针对 1000 的函数运行,即 O(1)
-
在考虑 O(n) 方面的复杂性之前,您需要先定义 n 是什么...
-
真正的问题是:为什么重要?这似乎是一个非常愚蠢的渐近分析函数。有许多(无限多!)O(1) 操作比 O(N) 操作慢,至少对于您选择的任意 N 而言。因此,不要盲目地使用 Big O 表示法:弄清楚您实际上要解决什么问题,然后看看 Big O 如何帮助您解决它 - 或者没有。
标签: java