我知道此算法的big-O复杂度是O(n^2)
,但我不明白为什么。
int sum = 0;
int i = 1; j = n * n;
while (i++ < j--)
sum++;
即使我们在开始时设置了
j = n * n
,也要在每次迭代过程中增加i并减少j,因此,得出的迭代次数是否应该比n*n
小很多? 最佳答案
在每次迭代期间,您增加i
并减少j
,这等效于将i
递增2。因此,迭代总数为n ^ 2/2,仍然为O(n ^ 2)。