【发布时间】:2023-03-16 16:22:01
【问题描述】:
在 Big-Oh 符号中,n 是什么意思?我已经看到了向量的输入大小和长度。如果是输入大小,是否意味着计算机上的内存空间?我看到n 经常与输入大小互换使用。
Big-Oh 的示例,
O(n) 是线性运行时间O(logn) 是对数运行时间。
代码复杂度分析示例,(我将输入n改为m)
def factorial(m):
product = 1
for i in range(1, m+1):
product = product*i
return product
这是 O(n)。 n 是什么意思?它需要多少内存?也许n 向量中的平均元素数?那么,当n=3,单数时怎么解释呢?
【问题讨论】:
-
在这种情况下,代码中实际上有一个名为
n的变量,我可以假设它引用该变量是安全的。 -
这里比较混乱,他们都是
n。但是我认为函数内部的O(n)和n是不同的东西? -
您发布的代码的运行时间与参数值成线性关系,而不是大小。因此,如果您在这种情况下将
O(n)解释为指输入的大小,则“This is O(n)”语句将是错误的。 -
等等什么?为什么运行时间取决于参数的值,比如 n=3 或 n=5?它不应该取决于它的大小,即输入向量中的元素数量吗?
-
什么输入向量?您的函数将单个整数作为其参数。运行时间取决于该值,因为迭代次数直接取决于该值。
标签: time-complexity big-o complexity-theory