为什么时间复杂度是T(n)= 2n ^ 2 + n + 1?

时间:2019-05-06 01:10:01

标签: algorithm big-o

T(n)= 2n ^ 2 + n + 1 我理解2n ^ 2和1部分,但对n感到困惑。

test = 0
for i in range(n):
    for j in range(n):
        test = test + i*j

1 个答案:

答案 0 :(得分:0)

这实际上取决于您的教授/书籍如何真正降低运营成本,但是我认为我们可以从这里弄清楚。让我们分解2n^2 + n + 1n^2来自两个循环。

for i in range(n):
    for j in range(n):

2系数大概来自两个运算。注意:这仅仅是恒定的时间复杂度AKA O(1)

test = test + i * j

range(n)的初始计算可能会花费n(在计算中为+ n)。然后,可以优化对range(n)的第二次调用以使用缓存的值。

最后,它可能是test = 0语句,开头可能是+ 1。这可能总计2n^2 + n + 1。但是,最糟糕的情况是时间复杂度仍为O(n^2)