big-o - 带模的时间复杂度分析

标签 big-o complexity-theory asymptotic-complexity

 sum = 0;
 for(i=1;i<2*n;i++)
    for(j=1;j<i*i;j++)
      for(k=1;k<j;k++)
        if (j % i == 1)
          sum++;

我需要用大 O 表示法来计算这段代码的时间复杂度。我了解如何在非常基础的层面上分析时间复杂度。我的问题是决赛的情况 内循环。如何将其整合到我的分析中?

最佳答案

 sum = 0;
 for(i=1;i<2*n;i++)
    for(j=1;j<i*i;j++)
      for(k=1;k<j;k++)
        if (j % i == 1)
          sum++;

所以:

  • i12n,因此这是 O(n)
  • j1i^2,因此这是 O(n^2)
  • kj 具有相同的值,因此它是 O(n^2)

其他一切都是恒定时间。所以最终的复杂度是O(n^5)

关于big-o - 带模的时间复杂度分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21707874/

相关文章:

algorithm - o(1) 中是否有任何函数?

algorithm - O(log n) 快速排序复杂度,可能吗?

algorithm - 合并排序中的比较数

algorithm - 何时使用 Big O 而不是 theta 或 little o

algorithm - 杂耍算法

Python 将列表转换为集合,大 O

algorithm - 程序的时间复杂度

algorithm - 证明函数加减法的大O

r - 如何找到 "Collect maximum coins"DP 解决方案的时间复杂度?

python - for 循环内部或外部 if 语句的复杂性