时间复杂度三个for循环

时间:2017-11-29 19:03:03

标签: time-complexity

我被告知这个alogrthim的时间复杂度是n^3,但我发现第一个循环将迭代n次,而第二个循环将迭代n^2和最后一个循环一个将迭代n(n-1)/2 + n,因为它将首先运行n n-1然后n-3.....1,因此时间复杂度应为n^2。有人能说出为什么这是错的吗?

procedure alg 1(int n)
t := 0
for i := 1 to n do
   for j := 1 to n do
       for k := n to j do
           t := i ∗ j ∗ k

1 个答案:

答案 0 :(得分:0)

n(n-1)/2 + n = (n^2-n)/2 + n开始,最后一个循环仍然是Big-Oh(n)。三个嵌套循环最终可以在n ^ 2处结束的唯一方法是最后一个是O(1)。

想象一下Big-Oh如何改变最后一个循环:

n = 1  | (n^2-n)/2 + n = 1
n = 10 | (n^2-n)/2 + n = 55
n = 100| (n^2-n)/2 + n = 5050

它在第三个循环中有一个不错的常量,但它仍然由指数控制。