我对具有数以千计的恒定计时操作的函数的时间复杂度有疑问,例如简单的加法 y = x + z 那将会 O(操作数) 要么 O(1),因为所有操作都需要固定的时间。
pyhton
def add(x, z) :
x = x+y
x = x+y
.
.
.
....(almost thousand times)
print(x)
add(5, 6)
答案 0 :(得分:0)
用O
符号引用wikipedia article:
Big O表示法是一种数学表示法,用于描述当参数趋于特定值或无穷大时函数的限制行为
因此,如您所见,一个函数将执行数千个甚至数百万个操作这一事实与它的“大O”时间复杂度无关,只要执行的操作数与输入大小。
在您呈现的示例中,操作数似乎并不取决于输入大小,因此其时间复杂度为O(1)
。
例如,让我们看一下这两个小功能:
def runs_in_constant_time(n):
for _ in range(100000000000000): # may take a while
print(n)
此功能可能会持续运行数十亿年,但仍以O(1)
运行,因为它的运行时间不取决于n
的大小或值。
另一方面,
def runs_in_linear_time(n):
for _ in range(n):
print(n)
以线性时间运行,在O(n)
中表示,因为如果将n
的值加倍,运行时间也将加倍。