嵌套循环执行次数

时间:2013-06-11 16:24:49

标签: nested-loops

我永远无法理解如何计算嵌套循环中内循环的执行次数。我想当我们有嵌套循环时,第一个的执行次数乘以第二个(内部),但我发现它们使用sigma和... ex。

for i <- n − 1 down to 0 do
   for j <- 1 to i do
     if A[j − 1] > A[j] then
        swap(A[j], A[j − 1])

exact number of execution => (n-1)+(n-2)+...+1 = sigma[i=1 -> n-1] i = n(n-1)/2

对于这种循环,我总是试着写下正在发生的事情。例如,对于这个,我确实喜欢这个:

i = 0 => j = - 
i = 1  => j = 1
.
.
.
i = n-1 => j = 1,2,3, ... , n-1

然后我不知道该怎么做:/

我真的需要帮助谢谢

1 个答案:

答案 0 :(得分:1)

在你给出的例子中,内循环中的j取决于外循环中的i(j <= i)。

您已正确枚举正在执行的执行。

你会得到:

  

1 + 2 + 3 + ... + n-1

这是高斯和。我们用来计算从1到N的连续数之和的公式是 sum = N *(N + 1)/ 2

在这种情况下,N = n-1,因此总和(内循环运行的总数)将为:(n-1)* n / 2.

我希望这能解决这个问题。

您最初提到的案例:

  

我想当我们有嵌套循环时,先执行的次数   一个乘以第二个(内部)

当内循环不依赖于外循环时,

为真(在这种情况下,如果j不依赖于i)。