具有数以千计的恒定时间操作的函数的时间复杂度是多少?

时间:2019-05-08 09:25:12

标签: algorithm time-complexity

我对具有数以千计的恒定计时操作的函数的时间复杂度有疑问,例如简单的加法 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)

1 个答案:

答案 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的值加倍,运行时间也将加倍。