在下面的循环中是复杂度O(1)还是O(n)?
for(int j = 0; j < Math.random() * 1000 + 1; j++)
我不知道它在循环中运行的次数,所以不应该是O(n)吗?
答案 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()可以输出的可能结果的范围