【发布时间】:2017-06-16 16:19:43
【问题描述】:
如果我有一个以 O(nm) 时间复杂度运行的函数,将其简化为仅说它以 O(n^2) 时间复杂度运行是常见的做法/可以接受吗?比如这样的函数:
function funcOne(nArray, mArray) {
for (var i = 0; i < nArray.length; i++) {
for (var j = 0; j < mArray.length; j++) {
....
}
}
}
另外,如果我有一个以O(n + m) 时间复杂度运行的函数,是否可以将其简化为仅说它以O(n) 时间复杂度运行?例如这样的函数:
function funcOne(nArray, mArray) {
for (var i = 0; i < nArray.length; i++) {
...
}
for (var j = 0; j < mArray.length; j++) {
...
}
}
【问题讨论】:
-
仅当
n是m的渐近线性函数。 -
Big-O 有严格的数学定义,您不能随意更换变量。
-
有时你会看到“in O(n²) where n = max(a, b)”或“n > m w.l.o.g”。但在大多数情况下,您会明确说明所有输入 O(mn) 的运行时复杂度。
标签: javascript algorithm runtime time-complexity big-o