ソフトウェアエンジニアリングクラスの紹介は、時間の複雑さに打ち勝ち、特定のアルゴリズムを分析する方法を学習しています。私は彼らが彼らの解決方法を見ているのが見苦しくて誰かがそれを説明できることを望んでいました。アルゴリズムの時間複雑度解の説明が必要
void foo(int N) {
int k = 1;
while (k < N * N) {
k = k * 2;
}
}
彼らのソリューションは、この機能のビッグ-Oは、O(logN個)であるということである[私はここでログイン理解ベース2である]
私は何回それが希望考えてこれを解決しようとしましたNにランダムな値を代入して反復し、パターンを見つけることができませんでした。
'k'と' N'の値をバイナリで書き出します。それではすべて意味をなさないはずです –
数学プログラム/ライブラリを使用して、ループ数とNの値の増加をプロットします。 – kaylum
@ user6918211:以下のいずれかの答えが十分であると感じたら、答えとしてマークしてください。 – Charles