【发布时间】:2017-01-05 18:33:30
【问题描述】:
var a = [1,2,3,4,5 ...]; //length n
var b = [7,8,9,0,6 ...]; // length m
for(var i = 0; i < n; i++) {
for (var j = 0; j < m; j++) {
// time complexity
}
}
在上面的代码中,n 的长度可以变化,但m 的长度是固定的,即数组a 的长度可以变化,而数组b 的长度保持不变。
上述代码的最坏情况下的时间复杂度会不会是O(n2) 而n == m?
或者
复杂度将为O(n*m),因为m 是恒定的,复杂度变为O(n)?
【问题讨论】:
-
如果
m是一个常数,它会被摊销,这意味着复杂度是O(n) -
@4castle 但在最坏的情况下,如果
n等于m,那么复杂度不应该是o(n2)吗? -
为什么 n=m 是最坏的情况?如果 n 比 m 大得多,情况会更糟。
-
时间复杂度表示随着 n 增加到无穷大,持续时间如何根据 n 演变。它没有说明 n 何时恰好等于某个常数。
-
c.f.基数排序,输入具有常数“w”位。复杂性有时被描述为 O(n),有时被描述为 O(wn)。这取决于您认为“常数”是什么。
标签: javascript algorithm time-complexity