我很难搞清楚这段代码的运行时间。我认为它是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++
答案 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)