c - for 循环中 n * n * n 次迭代的时间复杂度是多少?

标签 c algorithm data-structures time-complexity big-o

这些循环的时间复杂度是多少?如果我错了,请纠正我。

这个循环是 O(n^3) 因为它有 (n^3)/2 + 1 次迭代。

for (int i = 0; i < n * n * n; i+=2)
{
     //body
}

这个循环是 O(n^3 * m^2) 因为它有 (n^3 + 1) * (m^2 + 1) 次迭代。或者这只是 O(n^3),因为内部循环不是变量 n?

for (int i = 0; i < n * n * n; i+=2)
{
     for (int j = 0; j < m * m; j++)
     {
     //Body
     }
}

最佳答案

在第一种情况下,时间复杂度是O(n^3)。它捕获最重要的项,因此您可以忽略 1/2 的比例因子和常量 +1。在后一种情况下,它是 O(n^3 * m^2) 除非您将 m 视为常量而不是变量。在 Big-O 表示法中,您不必只用一个变量来表示输入数据的大小。

关于c - for 循环中 n * n * n 次迭代的时间复杂度是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41726006/

相关文章:

c - 编程新手 - C - 菜单系统中的失败问题

将 n 个工作分配给 m 个人的算法 n>m

javascript - Javascript中的一组数字对

haskell - Haskell 中是否有索引列表,它是好是坏?

c - 使用 fork 和 exec 启动进程,同时将 stdout 重定向到/dev/null

c++ - C++ 或 C99 理论上可以编译成同样可移植的 C90 吗?

在有向图中查找不同路径数的算法

data-structures - 除了邻接表或邻接矩阵之外,还有其他数据结构可以表示图吗?

c++ - 阻止编译器在具有遗留 C 代码的 C++ 代码中生成错误

algorithm - 优化/简化路径