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)
?
答案 0 :(得分:0)
当您看到变量变为大数时会发生什么,这更容易理解。
在这种情况下,n是变量,m是固定的。由于它们嵌套在for
循环中,因此我们得到O(n * m)的复杂度。
如果我们说n = 5且m = 3(固定)那么我们在循环中得到5 * 3 = 15次迭代。
如果我们说n = 10,000且m = 3(固定),那么我们得到10,000 * 3 = 30,000次迭代。
正如你在这里看到的更清楚一点,影响迭代的唯一因素是复杂性是n值。所以回答你的问题,是的,因为m是固定的,复杂性是O(n)。