c - 该算法最坏情况下的时间复杂度是多少?

标签 c algorithm data-structures big-o

void intFunction (int n, int value)
{
     int b,c;
     for (int j = 4; j < n; j++) {
          for (int i = 0; i < j; i++) {
               b *= val;
               for (int k = 0; k < n; ++k)
                    c += b;
          }
     }
}

我刚刚学习了 Big-O 概念。所以对于这段代码,据我所知,外部循环运行时间是 n,第二个内部循环运行 n(n+1)/2,内部循环也是 n(n+1)/2。所以运行时间是 O(N^5)?我对吗?

最佳答案

外层循环:

for (int j = 4; j < n; j++) 

迭代 n - 4 次,所以它是 O(n)。内循环:

for (int i = 0; i < j; i++)

最多迭代 n - 5 次,所以这也是 O(n)。最里面的一个:

for (int k = 0; k < n; ++k)

迭代 n 次,所以它是 O(n)。最终的复杂度是 O(n * n * n) = O(n^3)

关于c - 该算法最坏情况下的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25564284/

相关文章:

java - 删除二叉搜索树中的节点

c - 最大和最小 - 哨兵控制的重复

c - C中的猜数程序中的无限循环

c++ - 在自定义对象上查找

c - 动态列表 - 未知类型名称节点

arrays - Dart :无法将新列表添加到2D列表中

c - 通过 SOCKS5 代理进行 SSL 连接

c - 加入线程困惑

algorithm - 通过交替元素混合两个数组( zipper 样式)

python - 如何在 url 列表中快速找到不返回 302(重定向)状态代码的最后一个可用 url