代码的时间复杂度是多少?

时间:2014-09-13 15:43:40

标签: algorithm complexity-theory

以下代码的时间复杂度是否为(NV ^ 2)?

for i from 1 to N:
    for j from 1 to V:
        for k from 1 to A[i]://max(A) = V
           z = z + k

2 个答案:

答案 0 :(得分:2)

是的,每当我们谈论O-notation时,我们总会考虑 上限(或最坏情况)

因此,此代码的复杂性将等于

O(N*V*maximum_value_of_A)
=O(N*V*V)   // since,maximum value of A=V,so third loop can maximally iterate from 1 to V---V times
=O(N*V^2).

答案 1 :(得分:1)

确定它是 O(NV ^ 2),因为这意味着代码永远不会因为max(A)= V,你可以说最糟糕的情况是,当A的每个指数都存在V.如果是,那么复杂性可以限制为O(NV * V)。

您可以非常粗略地计算for k循环的复杂度可以是O(avg(A))。这允许我们说整个函数是Omega(NV * avg(A)),其中avg(A)< = V。

Theta表示法(意为渐近复杂性)可以表示为 Theta(NV * O(V)),O(V)表示函数的复杂性,该函数永远不会比V快,但是并不是一成不变的。