以下代码的大O表示法(复杂性)?

时间:2015-05-05 15:56:00

标签: java

我只是想知道下面代码的重要内容是什么:

我在想O(n)。你们有什么感想?谢谢你的帮助!

./pgroup echo Test

2 个答案:

答案 0 :(得分:1)

由于您要求Big O符号,这是最糟糕的时间复杂度,答案是:

O(n^x),其中x是外部for循环中使用的分母。

答案 1 :(得分:1)

这几乎看起来像是一个类赋值,所以我不回答它,但只是给你一些指示(不应该通过将赋值复制到Web来完成作业;))。作业也不完整。我希望你的老师/讲师不要这样做。

缺少的信息是:

  • 您是在寻找最坏情况运行时还是平均情况运行时? Big-O可用于两者。 [最初我包括了最好的案例运行时,但这是用大型欧米茄完成的,正如杰瑞在评论中指出的那样]
  • 另一个缺失的部分是变量的数据类型。如果它们是双精度数,则需要更长的时间,直到w = w / 2为0才能使用整数。

最坏情况运行时间:

内循环有i = i-1,所以执行长度时间。这为内循环提供了O(n)。

这已经表明您的估计是错误的。它必须是外循环TIMES的执行次数,即内循环的执行次数,因此它必须大于线性(除非外循环具有恒定的执行次数)。

外环有w = w / 2,因此,就长度而言,这需要多长时间为0?这将为您提供外循环执行的频率。并且,通过乘法,执行的总数。

比这个randomNumber()。正如我所说,我假设最坏情况分析,最糟糕的情况显然是从不4,因此我们可以忽略这一回报。

平均案例运行时间:

循环的分析不会改变。对于randomNumber(),我们需要估计有多长时间,直到NOT为4的概率足够小。但是,我没有足够的信息关于randomNumber()来做到这一点。

最佳案例运行时[应该是大omega,而不是大o]:

在最好的情况下,randomNumber()在第一次调用时返回4。所以最好的案例运行时是常量,O(1)。