当我是外循环而内循环以j = i + 1开头时,双循环的时间复杂度

时间:2018-09-26 01:08:44

标签: arrays loops time double complexity-theory

我正在尝试使我在下面编写的算法的复杂性更加清晰:

left = 1
right = 1

for i=0; i < array.len; i ++:
        j = i+1
        for j; j < array.len; j++:
             right *= array[j]
        tmp[i] = array[idx]
        left *= array[idx]
        right = 1
return tmp

如果将数组大小定义为n,则外循环为O(n),但内循环实际上并没有一直迭代n-1次,仅在i = 0时才第一次迭代。

那么,复杂度是多少? O(n)为外循环 O(n-j)为内循环? 因此,也许O(n(n-j))?到底是O(n ^ 2)?

请帮助。

1 个答案:

答案 0 :(得分:2)

是的,O(n ^ 2)是时间复杂度。第一个循环运行n次。第二个循环对于第一个循环的每次迭代运行n次。 n * n = n ^ 2