任何人都可以告诉我下面这段代码的时间复杂度:
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
?谢谢!
答案 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)中。