我只是想知道下面代码的重要内容是什么:
我在想O(n)。你们有什么感想?谢谢你的帮助!
./pgroup echo Test
答案 0 :(得分:1)
由于您要求Big O
符号,这是最糟糕的时间复杂度,答案是:
O(n^x)
,其中x是外部for循环中使用的分母。
答案 1 :(得分:1)
这几乎看起来像是一个类赋值,所以我不回答它,但只是给你一些指示(不应该通过将赋值复制到Web来完成作业;))。作业也不完整。我希望你的老师/讲师不要这样做。
缺少的信息是:
最坏情况运行时间:
内循环有i = i-1,所以执行长度时间。这为内循环提供了O(n)。
这已经表明您的估计是错误的。它必须是外循环TIMES的执行次数,即内循环的执行次数,因此它必须大于线性(除非外循环具有恒定的执行次数)。
外环有w = w / 2,因此,就长度而言,这需要多长时间为0?这将为您提供外循环执行的频率。并且,通过乘法,执行的总数。
比这个randomNumber()。正如我所说,我假设最坏情况分析,最糟糕的情况显然是从不4,因此我们可以忽略这一回报。
平均案例运行时间:
循环的分析不会改变。对于randomNumber(),我们需要估计有多长时间,直到NOT为4的概率足够小。但是,我没有足够的信息关于randomNumber()来做到这一点。
最佳案例运行时[应该是大omega,而不是大o]:
在最好的情况下,randomNumber()在第一次调用时返回4。所以最好的案例运行时是常量,O(1)。