2017-01-09 8 views
0
for(i = 1; i < n; i *= 2) { 
    sum++; 
    for(j = 0; j < n; j += 2) 
     total++; 
} 

時間の複雑さ:時間の複雑対数

O(log(n)) 
O(log(n)) 
O(n)*O(log(n)) 
O(n)*O(log(n)) 

だから、最終的な答えは次のとおりです。O(log(n))

はこの正しいですか?

+0

あなたのコードは明確ではありません。最初に、どの命令がどの命令に対応しているかを認識できる形で書きますか?ネストされたループの2番目ですか? –

+0

はいネストされたループです –

+1

このコードでは、いいえ、そうではありません –

答えて

1

複雑さは、このようなものになります。

O(lgN) 
    O(1) 
    O(N/2) == O(N) 
     O(1) 

とても複雑です:

、これが最終的な答えのO(LGN)*(O(1)+ O(N)であります* O(1))

O(N)* O(1)= O(N)(1)

O(N)+ O(1)= O(N)(2)理由O (N)がO(1)より大きい

(1)&(2)最終的な答えはO(LGN)* O(N)= O(N LGN)

+0

ohhです。++はループの内部を意味するためO(logn)ではありません –

+0

はい、答えがネストされていないのはO(n)でなくO(log(n))ですか? –

+0

複雑度n/2を計算するときのn/2はnに等しく、n + 3はnと等しくなります。 –

1

複雑であるだろうと仮定:O(N)* O(LG( n))