如何找到这个函数的Big O表示法?

时间:2018-02-06 02:23:29

标签: big-o

for ( i =0; i < n ; i ++) {
    if ( i %2==0) {
      for ( j =0; j < i ; j ++) {
         System . out . println ( " Hi " );
  }
 }
}

我如何找到此代码的大O符号?

1 个答案:

答案 0 :(得分:0)

您可以计算出在n次操作中需要执行每次操作的次数并删除常量。

最外层循环for ( i =0; i < n ; i ++) {更改最内层循环中使用的i的值。

if语句if ( i %2==0) {表示内部循环将以1/2的常量运行n,因此您可以忽略它,它只是一个常量。

忽略if语句,最终内循环for ( j =0; j < i ; j ++) {运行1 + 2 + 3 + 4 + ... + n次,等于n(n + 1)/ 2次。忽略常数,即n ^ 2。

为O(n ^ 2)

资源:https://en.wikipedia.org/wiki/1_%2B_2_%2B_3_%2B_4_%2B_%E2%8B%AFBig O, what is the complexity of summing a series of n numbers?