【发布时间】:2017-03-26 13:15:06
【问题描述】:
如果我接受这个功能:
def nested_multiplier(a, b):
"""
returns a*b
"""
count = 0
for i in range(a):
for j in range(b):
count += 1
return count
这里很清楚,就分配数量而言,复杂度将是 a * b。
到目前为止还不错。
因此,如果我想用 a 来计算大 O,我想我必须考虑该函数具有 O(n),因为在这种情况下我必须将 b 视为一个常数值?
同样,如果我想要 b 的大 O,出于同样的原因,它会是 O(n)。
这似乎是有道理的,但直观地说,对于像这样的嵌套迭代块,我期望 O(n^2) 或其他一些指数类型的值。当您考虑 a 和 b 具有相同的值时,这非常有意义(即让 a = 5 和让 b = 5 将有 25 个分配)。
那么用大 O 表示法来表达这个函数的复杂性的正确方法是什么?
【问题讨论】:
-
这个问题比较适合计算机科学堆栈交换但我也回答了。
标签: python algorithm big-o computer-science