申し訳時間複雑
for (int i=0; i<n; i++) {
for (int j=0; j<i; j++) {
do stuff...
}
}
は、このコードn^2
またはnlogn
の複雑さですか? ありがとう
申し訳時間複雑
for (int i=0; i<n; i++) {
for (int j=0; j<i; j++) {
do stuff...
}
}
は、このコードn^2
またはnlogn
の複雑さですか? ありがとう
複雑さはO(n^2)
です。
外側ループの最初の反復のために、内側ループは、外側ループの2回目の反復について0
回
を反復し、内部ループは1
回反復します。
外側ループの3番目の反復では、内部ループは2
回繰り返されます。外側のループのn
番目の反復について
.........
、インナーループがn - 1
回反復します。
反復の総数= 0 + 1 + 2 + 3 + 4 ...... + (n - 1)
私たちが知っている、算術級数
1 + 2 + 3 + ..... + (n - 2) + (n - 1) + n = (n * (n + 1))/2
ので、
0 + 1 + 2 + 3 + 4 ...... + (n - 1)
= (n * (n - 1))/2
~ n^2
は一定の時間で実行されますdo stuff
相を考慮するとの合計で、全体的な時間複雑度はO(n^2)
です。
なぜ2で割りますか? – Adjit
アップデートを確認する –
[ネストされたループのBig-Oとは、内部ループ内の反復の数が外側ループの現在の反復によって決定されるものです](http://stackoverflow.com/questions/362059)/what-is-the-big-of-a-nested-loop-in-in-the-inner-loopの番号) – Liam
あなた自身のコードの不正な作成をやめてください。私は今3回これをロールバックしなければならなかった – Liam