このアルゴリズムを実装しているプログラムの実行時間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;
このアルゴリズムを実装しているプログラムの実行時間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;
ネスト
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;
(n + 1)/ 2 - 内側のループ//なぜ我々は/ 2で割りますか? – Saffor
@Saffor: 'i == n 'のときには' n'ループがあります。 'i == 1 'のときは' 1'ループしかありません。私たちは平均で '(n + 1)/ 2'を持っています –
あなたは命令にsum++;
n(n+1)/2
回と指示A[k]=k;
n
倍に達します。
合計はT(n)=(n^2+3n)/2
となります。
n^2 ______________ – valdo
ネストされたループからのO( 'n ** 2') ' –
n^2/2 + n => O(n^2) – Synn