在以下代码中,最佳的情况是什么? 最好的情况是输入一个空列表,这意味着循环不会迭代,因此为O(1)? 还是应该将其视为始终迭代n次并因此始终迭代O(n)的循环,而不管输入如何?
def f(L, x):
n = len(L)
c = 0
for i in range(n):
if L[i] == x:
c = c + 1
return c
答案 0 :(得分:1)
它将始终为O(n),因为无论输入如何,循环都将迭代n次。 N等于1不会使复杂度等于O(1),O(1)仅保留给原子操作,无论O(1)是什么。
基本上O(N)表示此代码段的时间以线性方式取决于N。