o(1)或o(n)的复杂度是多少?

时间:2019-03-05 17:46:06

标签: java

在下面的循环中是复杂度O(1)还是O(n)?

for(int j = 0; j < Math.random() * 1000 + 1; j++)

我不知道它在循环中运行的次数,所以不应该是O(n)吗?

2 个答案:

答案 0 :(得分:7)

其为O(1),因为n是输入。代码中没有输入

for(int j =0 ;j<(Math.random()*1000+1);j++)

您的代码将以1000的函数运行迭代次数,因此O(1)

答案 1 :(得分:-1)

由于它是一个随机数生成器,因此复杂度n * 1000 + 1因此为O(n)。如果它的静态值类似于1000 + 1,则复杂度应为O(1)。其中n是函数Math.Random()可以输出的可能结果的范围