algorithm - 使用 for 循环条件计算大 oh 符号

标签 algorithm time-complexity big-o analysis

当函数包含一个具有特定条件的 for 循环时,我试图理解函数的 Big-oh 表示法的计算。

for (initialization, condition, increment)

或()如下:

    public void functE( int n ) 
    {
       int a;
       for ( int i = 0; i < n; i++ )
           for ( int j = 0; j <= n - i; j++ )
               a = i;
    }

我想这个函数的大 O 是 O(n^2),这有效吗?

最佳答案

假设a = i需要1个时间单位,你可以考虑每个i:

  • 我 = 0 : n + 1
  • i = 1 : n
  • i = 2 : n - 1
  • ...
  • 我 = n - 1 : 2

总计:

T(n) = (n+1) + (n) + (n-1) + ... + 2 = n + [1 + ... + n] = n + n * (n + 1 )/2 = (n^2 + 3n)/2 = O(n^2)

关于algorithm - 使用 for 循环条件计算大 oh 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57877517/

相关文章:

algorithm - 具有黄色和黑色边缘的最短路径

c++ - 有效地计算两个 std::multimap 迭代器之间的条目数

algorithm - 时间复杂度和 Big-O 符号特定问题

为设置的表格宽度计算可变列宽的算法

algorithm - 为什么算法在增加数字精度时会失败?我们如何降低算法对数字精度的敏感度?

algorithm - 使用近点坐标在集合中查找对象的最快方法

algorithm - 我的算法的最佳情况是 n=1 因为那是最快的?这是对的吗?

ruby - 查找和检查素数的复杂性是什么?

time-complexity - 什么是 O(log(n!))、O(n!) 和斯特林近似?

algorithm - 实现需要最少内存的算法