嵌套循环

时间:2018-04-26 16:17:25

标签: complexity-theory

我必须找到这个循环的Big O复杂性:

for(i=0; i<n; i++)
    for(j=0; j<n-i; j++)
        print(i)

我认为它是O(n ^ 2),但我并不确定。任何人都可以帮助我吗?

1 个答案:

答案 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)