我必须找到这个循环的Big O复杂性:
for(i=0; i<n; i++)
for(j=0; j<n-i; j++)
print(i)
我认为它是O(n ^ 2),但我并不确定。任何人都可以帮助我吗?
答案 0 :(得分:2)
你是对的,复杂性是O(n^2)
。
第一个循环(for(i=0; i<n; i++)
)非常简单。那是O(n)
。
第二个循环(for(j=0; j<n-i; j++)
)比较棘手:它(理论上)O(n - i)
。
当你将这两者结合起来时,你最终会得到:
O = n^2 - i*n
由于位O表示法只占最大因子,因此您只需删除- i*n
并最终得到:
O(n^2)