找到大O运行时间

时间:2018-01-26 14:46:03

标签: time-complexity big-o

我很难搞清楚这段代码的运行时间。我认为它是O(n)因为i = 0并且第一个while循环一直持续到i = n但是然后第二个while循环进来并且整个事情让我失望。

i=0
sum = 0;
    while i<n:
       sum++
       if i==3 or i==7 or i==5:
          j=0
          while j<n:
             sum++
             j++
       i++

3 个答案:

答案 0 :(得分:2)

确实是O(n)。如果你没有if语句,你将拥有O(n^2)。但内循环最多运行3次,因此相当于O(3n)O(n)

答案 1 :(得分:1)

内循环最多只能执行3次。对于较大的n值,在该循环中花费的总时间对整个运行时间来说无关紧要。

答案 2 :(得分:1)

它仍然是O(n)。第二个while循环在更坏的情况下需要3n时间。(n> = 8)