java - BIG O循环分析

标签 java algorithm big-o

有人可以提供多项式 O(n^2) 、指数 O(2^n) 和阶乘 O(n1) 的循环示例。我似乎无法理解它。

我理解
O(log n) for (int i=0; i<=10; i=i*2) OR for (int i=0; i<=10; i=i/2)的概念
O(n) for (int i=0; i<=10; i++)(int i=10; i<=0; i--) .
O(n^2) `

for (int i=0; i<=10; i++)
{
    for (int i=0; i<=10; i++)
    {
      //DO SOMETHING
    }
}

最佳答案

一个更明显的 O(2^N) 例子是:

public int count2PowerN(int n) {
  if (n <= 1) {
     return n;
  } else {
     return count2PowerN(n - 1) +  count2PowerN(n - 1);
  }
}

注意事项:

  1. O(2^N) 等同于任何 O(c^N),其中 c 是常量。通常使用e 作为标称常数;我,e O(e^N)
  2. 你无法通过简单的嵌套循环获得 super 多项式的复杂性。您需要递归或动态数据结构。

关于java - BIG O循环分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37369763/

相关文章:

java - 如何在java中找到给定范围内的百分比

math - 从有限集中进行朴素随机选择的 O 值是多少?

javascript - 在可变数量的集合中寻找没有重复字符的最长公共(public)子序列?

c# - 如何组合列表的元素

algorithm - 嵌套算法的计算复杂度

c++ - 这个独特的字符串函数的执行时间是否从天真的 O(n^2) 方法中减少了?

java - 如何将 "..."省略号添加到 WebView 中的冗长文本?

java - 会影响 Java 内存使用的 Linux 配置?

java - 在 Java 中拖放

java - 双端队列最后一个元素插入。