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

时间:2017-12-06 18:14:43

标签: algorithm time-complexity

我正在研究算法,我遇到了一个问题,我无法解决。

for(int i = 0; i < n; i++)
    for( int j = 0; j < i; j++)
        sum++;

因此,此代码的时间复杂度为n ^ 2。但。第一个循环迭代n次,我明白了。但第二个是迭代n(n + 1)/ 2。所以..它变成n *(n(n + 1))/ 2。哪里出错了?

1 个答案:

答案 0 :(得分:3)

首先你需要了解Big-O表示法。它会抛出所有低阶项,并且仅保留最高N

您的外循环运行N次,因此最高项为n,内循环的最高value是多少?它是(n-1)

因此对于外部循环的Nth迭代,你得到n-1内循环的N(N-1) = (N^2 - N)迭代,O(N^2)和big-O const db = require('../lib/DB').default;