嵌套j = i + 1循环的大O时间复杂度

时间:2013-08-27 07:42:04

标签: big-o

任何人都可以告诉我下面这段代码的时间复杂度:

for (int i = 0; i < array.length - 1; i++) {
    for (int j = i + 1; j < array.length; j++) {
        // do something
    }
}

O(n^2)以后不能j = i + 1?谢谢!

1 个答案:

答案 0 :(得分:8)

外循环有n-1次迭代。在每次迭代中,内部循环迭代n-i-1次。因此,内部循环总共迭代n-1 + n-2 + ... + 1次。因此do something执行的次数等于从1到n-1的数字之和。该总和为n*(n-1)/2,其在Theta(n ^ 2)中,因此也在O(n ^ 2)中。