【问题标题】:How to find Big O Notation of this function?如何找到这个函数的大 O 表示法?
【发布时间】:2018-07-16 00:20:04
【问题描述】:
for ( i =0; i < n ; i ++) {
    if ( i %2==0) {
      for ( j =0; j < i ; j ++) {
         System . out . println ( " Hi " );
  }
 }
}

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

【问题讨论】:

  • O(N²),当然

标签: big-o


【解决方案1】:

根据 n 次操作计算每个操作需要执行多少次并删除常量。

最外层循环,for ( i =0; i &lt; n ; i ++) { 改变了用于最内层循环的 i 的值。

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

忽略 if 语句,最后的内部循环,for ( j =0; j &lt; 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?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 2019-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    相关资源
    最近更新 更多