我知道Big O的各种速率,例如O(n ^ 2)和O(n),并且确定简单嵌套for循环的Big O值没有问题,如下所示。
for (int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
//Simple Statement
以下循环显然是O(n ^ 2),但是当内部嵌套循环依赖于外部循环时,如何解决Big O. 实施例
for ( int i = 0; i < n; i++)
for (int j = n - 1; j >= i; j--)
//Simple Statement
T(n)只是n *(n-1-i)?
提前感谢您的帮助!
答案 0 :(得分:3)
它仍然是n ^ 2的数量级。你只关心最重要的术语。第二个表达式看起来像O(n ^ 2 - an),其中a是某种系数。你真正关心的是n ^ 2。
答案 1 :(得分:2)
内环运行n +(n-1)+(n-2)+ ... + 2 + 1次。这是一个高斯和,等于n *(n + 1)/ 2,或(n ^ 2 + n)/ 2,因此O(n ^ 2)。