【发布时间】:2019-09-13 19:46:14
【问题描述】:
我有以下功能:
def foo(length, num):
return num in range(length)
这个函数的时间复杂度是多少?注意到range()在Python 3上创建了一个Range对象,这个函数的时间复杂度是O(1)还是O(N)?
想知道各种 Python 版本之间的时间复杂度是否也存在差异(2 对 3)。
【问题讨论】:
-
如果项目是
int,那么在 Python-3.x 中将采用 O(1),而 O(n) 在 Python-2.x 中。对于floats,两者都是O(n)。 -
太棒了!您想回答这个问题吗?我可以将其标记为正确?
-
@geckos 这里不涉及任何生成器。
-
@geckos,当您从 range(...) 创建一个集合时,它已经是 O(n) 复杂度,因为 range(...) 的所有元素都将存储在内存中.
标签: python python-3.x algorithm python-2.7 range