algorithm - 无法理解算法的复杂性

标签 algorithm complexity-theory

<分区>

我正在学习算法并在 top coder 中偶然发现了这篇文章。

这是来自 article 的示例

int result=0;                           //  1
for (int i=0; i<N; i++)                 //  2
  for (int j=i; j<N; j++) {             //  3
    for (int k=0; k<M; k++) {           //  4
      int x=0;                          //  5
      while (x<N) { result++; x+=3; }   //  6
    }                                   //  7
    for (int k=0; k<2*M; k++)           //  8
      if (k%7 == 4) result++;           //  9
  }                                     // 10

第 6 行的 while 循环的时间复杂度显然是 O(N) - 它执行不超过 N/3 + 1 次。

我在这里很困惑,因为作者说时间复杂度是 O(N)。对我来说似乎是 O(N^4)。请解释一下,我忽略了什么。我只是开始算法。

最佳答案

第 6 行中的 while 循环的复杂度为 O(N)。

关于algorithm - 无法理解算法的复杂性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14551782/

相关文章:

algorithm - 该算法的大 O 表示法是什么

algorithm - 在比 O((k+N) * 2^(N/2)) 更快的范围内生成所有子集总和?

algorithm - 如何有效地调试共享内存中的引用计数问题?

algorithm - 有效地解决这种递归关系。 [优于O(N ^ 2)]

java - 使用二叉堆合并多个数组

algorithm - 带有扭曲的二分匹配

c++ - 使用求和预测算法的理论平均情况效率和增长顺序

ruby - 搜索多个数据源

algorithm - 在 O(n) 时间内从包含属于给定查询的所有单词的段落中找到最小长度的片段

apache-flex - 如何使用flex创建人