两个嵌套for循环的时间复杂度

时间:2017-01-05 18:33:31

标签: javascript algorithm time-complexity

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)

1 个答案:

答案 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)。