Big O notation大零符号一般用于描述算法的复杂程度,比如执行的时间或占用内存(磁盘)的空间等,特指最坏时的情形。
Linus Torvalds说过“Talking is cheap, show me the code.”,那我们直接从代码(Python)上来学习Big O吧。
O(1)
def isFirstElementNull(elements, value):
return elements[0] == value
#print isFirstElementNull(["1","2"],"1")
无论输入参数是什么,这个函数就只执行一次,所以它的复杂度为O(1)。
O(N)
def containsValue(elements, value):
for e in elements:
if e == value:
return True
return False
#print isFirstElementNull(["1","2"],"1")
这里有一个for循环,如果运气好就执行一次(elements里第一个值就跟value一样),运气不好就要执行N次(N等于elements的长度,碰巧elements里最后一个值跟value一样),因为Big O是表示最坏时情形,所以这个函数的复杂度为O(N),好理解吧。
O( N2