具有两个独立外部循环和一个相关内部循环的三重嵌套For循环

时间:2019-03-02 13:14:17

标签: algorithm

我有以下循环序列。

  TripleLoop(int n)
   for i <- 1 to n
       for j <- 1 to n
          for k <- j to n 
   do num <- j + i
   return num

我知道两个外部循环运行“ n”次。 因此,对于两个外部循环,我们有n * n = n ^ 2。 但是,第三个内部循环取决于变量“ j”。

我如何开始解决这些嵌套的依存for循环类型? 我不确定是否应该相乘,或者将第三个内部循环添加到两个外部循环中。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

内部循环(以k作为迭代器的循环)执行了n-j+1次,因为它从j开始并以n结尾。

中间for循环执行的 steps 总数是j每次迭代的步数之和,因此这意味着我们运行的总次数内部for循环的主体是:

 n
---
\                  n * (n + 1)
/    n - j + 1  = -------------
---                    2
j=1

因此,在外循环进行一次迭代(以i作为迭代器的迭代)之后,我们执行了n*(n+1)/2个步骤。

因此,我们的算法总共将运行内部循环的主体总共n * n * (n+1)/2次。由于外部循环运行n次,并且该循环主体中的步数取决于i本身的值。

如果我们认为num <- j + 1部分在恒定时间内运行(严格来说,严格地讲,对大量数字求和不能在恒定时间内运行),那么这就是 O(n 3 算法。