我永远无法理解如何计算嵌套循环中内循环的执行次数。我想当我们有嵌套循环时,第一个的执行次数乘以第二个(内部),但我发现它们使用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
然后我不知道该怎么做:/
我真的需要帮助谢谢
答案 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)。