我正在研究如何找到这个问题的时间复杂度,但是第三个嵌套循环让我有些困难。以下是代码:
for (int i = 1 to n)
for (int j = i to n)
for (int k = j*j to n)
//some constant operation
i循环显然是O(n)。
j循环是(n + n-1 + n-2 + ... + 2 + 1) = (n-1)n/2 = O(n^2)。
但是我不确定如何考虑k循环。我知道对于j的一个完整循环(从1到n),求和类似于(n + n-4 + n-6 + ...) = sum_{k=1}^n (n - k^2),但我不确定该怎么继续下去。
请给出如何继续的建议,谢谢!
(n + (n - 4) + (n - 6) + ... )
,但实际上应该是(n - 9)
而不是(n - 6)
。 - nbroj
循环的上限? - interjay