迭代次数公式?

时间:2014-04-12 08:32:25

标签: algorithm logic equation

我必须根据n创建一个等式,以找出if(sj< sindex)循环迭代的次数。我可以弄清楚循环迭代的次数,如果我通过手动运行程序已经得到n的值(例如,如果n = 4,循环将迭代6次),但我将如何用术语来表示广义等式的?

         for i = 1 to n-1 {
         //find smallest in s1, ...., sn
         index = i 
         for j = i + 1 to n
             if ( sj < sindex)
                 index = j
             swap( si, sindex)
         }

1 个答案:

答案 0 :(得分:0)

内部循环从i+1n,即n-i次。外环为i=1, 2, ... n-1调用它,即总共n-1 + n-2 + ... n-(n-1)次。

您需要表达从n-11的整数之和。这笔款项有n-1个条款。

Wen n-1是偶数,你可以将每个(n-1)/2个术语分为两半:从n-1(n+1)/2和从(n-1)/2向下到1。反转第二部分并成对添加,您将获得:(n-1 + 1)+(n-2 + 2)+ ...((n + 1)/ 2 +(n-1)/ 2)。< / p>

所有对总和为n,其中(n-1)/2总共为n.(n-1)/2

n = 9的示例:

8 + 7 + 6 + 5 + 4 + 3 + 2 + 1
=
8 + 7 + 6 + 5 +
1 + 2 + 3 + 4
=
9 + 9 + 9 + 9

现在如果n-1是奇数,n-2是偶数。您可以通过将n-1添加到n-2个第一个整数的总和,即n-1 + (n-1).(n-2)/2 = n.(n-1)/2来获得答案。

在这两种情况下,n.(n-1)/2

检查:4.(4-1)/2 = 6