java - 以下代码的增长顺序

标签 java algorithm big-o time-complexity

以下代码片段的最坏情况运行时间随 N 的增长顺序是什么? 

int sum = 0; 
for (int i = 0; i*i < N; i++) 
   for (int j = 0; j*j < 4*N; j++) 
       for (int k = 0; k < N*N; k++) 
           sum++;

最佳答案

  1. 外层循环一直运行到 i*i >= N,这意味着它总共运行了
    sqrt(N) 次。
  2. 对于外循环的每次迭代,内循环运行直到 j*j >= 4*N,同样这意味着它运行 sqrt(4N) = 2sqrt(N) 次。
  3. 对于中间循环的每次迭代,内部循环运行直到 k>=N*N,这意味着 N^2 次迭代。
  4. 在恒定时间内增加总和。

将上面的内容相乘,因为你对 (2) 的每次迭代执行 (3),对 (1) 的每次迭代执行 (2),你得到 sqrt(N)*2sqrt(N)*N^ 2 = 2N^3,也就是 O(N^3)

关于java - 以下代码的增长顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29939873/

相关文章:

java - 在 Selenium Webdriver 中调用 href 值

java - Android MVP - 调用服务器

algorithm - 菜鸟算法的运行时间

java - 如何使用jackson将Json映射到Java对象

java - eclipse GWT "There are no CSS files referenced"

algorithm - 是否有一种算法可以寻找 3 个变量之间的数学联系?

algorithm - 如何使用 Strassen 算法乘以 2 的幂以外的度数矩阵?

python - 开发算法可视化/模拟

algorithm - O(nlogn) + O(n) 的时间复杂度是否只是 O(nlogn)?

time-complexity - 为什么代码的时间复杂度为 O(log n)?