web-dev-qa-db-ja.com

特定のコードのBig-O表記を計算するにはどうすればよいですか?

したがって、私は本日中期にデータ構造を取得し、次のネストされたループの実行時間をBig O表記で決定するように求められました。

for (int i = 0; i < n-1; i++) {
    for(int j = 0; j < i; j++2) {
        //1 Statement
    }
}

実行時間を決定する背後にある式を理解するのに苦労しています。内側のループには1つのステートメントがあり、系列方程式(n *(n-1))/ 2を使用しているので、1n *(n-1)/ 2.と計算しました。したがって、(n ^ 2 --1)/ 2.したがって、ランタイムをO(n ^ 2/2)に一般化しました。これが正しいかどうかはわかりませんが、jは2の間隔でアップされているので、答えを2で割る必要がありましたか?それとも私の答えは完全にずれていますか?

6
ummmmmmm

正確には、//1 statementは、特定のコードのBig-O表記を計算する上で非常に重要です。しかし、一定の時間がかかることを考えると(count + = 1ステートメントと想定しています)、ソリューションは次のようになります。

(Sigma i (over 1 to n) (Sigma j (over 1 to i))

そして、これはO(n ^ 2)につながります。

これで問題を解決することをお勧めします link 1回。これらはあなたに良い考えを与えるでしょう。

2
Vaibhav Agarwal