2017-02-02 9 views
0

このアルゴリズムを実装しているプログラムの実行時間T(n)はどれですか? - 合計時間とは何ですか?このアルゴリズムの実行時間T(n)はどれくらいですか?

T(n)≈cop C(n)。

sum = 0; 
for (i=1; i<=n; i++) 
    for (j=1; j<=i; j++) 
     sum++; 
for (k=0; k<n; k++) 
    A[k] = k; 
+1

n^2 ______________ – valdo

+1

ネストされたループからのO( 'n ** 2') ' –

+1

n^2/2 + n => O(n^2) – Synn

答えて

4

ネスト

for (i=1; i<=n; i++) 
    for (j=1; j<=i; j++) 
     sum++; 

ループ

n   - outer loop 
    (n + 1)/2 - inner loop 

    n * (n + 1)/2 == 0.5 * (n^2 + n) == O(n^2) 

操作をもたらします。あなたはより良いO(n)ルーチンを実装できます。

sum = n > 0 ? n * (n + 1)/2 : 0; 

    for (k = 0; k < n; k++) 
    A[k] = k; 
+0

(n + 1)/ 2 - 内側のループ//なぜ我々は/ 2で割りますか? – Saffor

+0

@Saffor: 'i == n 'のときには' n'ループがあります。 'i == 1 'のときは' 1'ループしかありません。私たちは平均で '(n + 1)/ 2'を持っています –

1

あなたは命令にsum++;n(n+1)/2回と指示A[k]=k;n倍に達します。

合計はT(n)=(n^2+3n)/2となります。

1

あなたは、正確な分析が必要な場合、それは(私たちが出て内側から開始する必要があります)、次のようになります:C1、C2は定数である

enter image description here

関連する問題