2016-04-04 9 views
0

次のスニペットで時間の複雑さを計算することに疑念がありました。コード中の計算時間の複雑さ

ケース1: - (i = N; I> = 1; I = I/2)用 のprintf( "%dの"、I)。

ケース2: - のための (I = 1; I < N; 私は=私は2 *)、 のprintf( "%d個"、i)は

は、私は、上記のコードを伝えることができるのだろうO(N/2)またはO(log N)入力に対して実行時間がかかりますか?

ありがとうございます。

+0

'n 'の値を変えて実行すると、いくつの行が得られますか?行数は 'log n 'に比例するようですか? – Useless

答えて

1

これはO(log2(n))で、this.i = 1と考えると印刷結果は1、次に2,4,8,16から2^x> nまで計算し、 x> log2(n)なので、時間複雑度はO(log2(n))です。