2016-11-13 6 views
-1

だから、私のインストラクターが私たちを与えた質問は、私たちは、このアルゴリズムの実行時間見つけました:溶液中ではこのアルゴリズム(n^2)*(n^2 + 1)/ 2(つまりO(n/4))の実行時間はなぜですか?

{n > 0} 
    i := 1; 
    while i ≤ n^2 
    j := 1; 
    while j ≤ i 
     j := j + 1; 
    endwhile 
    i := i + 1; 
endwhile 

を、ランタイムはここ のn^2(N^2 + 1)/ 2、ですΘ(n^4)です。

したがって、最初のwhileループのランタイムはn^2ですが、なぜ2番目のループの実行時間は(n^2 + 1)/ 2になりますか?

ご協力いただきありがとうございます。

答えて

0

第2ループはi回実行されます。

i1からn^2まで変化するのであれば、実行時には、あなたがn^2kを交換する場合

1 + 2 + ... + k = k*(k+1)/2 

だから、あなたがn^2*(n^2+1)でランタイムを入手することになりました

1 + 2 + 3 + ... + n^2 

注意です。 私は正しいidentがあったとします:

{n > 0} 
    i := 1; 
    while i ≤ n*n 
     j := 1; 
     while j ≤ i 
     j := j + 1; 
     endwhile 
     i := i + 1; 
endwhile 
+0

実際には完璧な意味合いがありました。だから、内側のループを見ると、ループは最初に1回実行されてからn^2まで2回実行されるため、1からn^2になります。和は、n^2(n^2 + 1)を与える。ありがとう、男。注:それは私がそれを意図した方法であり、私は今それを指摘してくれたので編集しました。 –

関連する問題