その複雑さを Big-O 記法で表現するにはどうすればよいですか? 外側のループのインデックスに応じて 2 番目の for ループが変化するため、少し混乱しています。まだO(n^2)ですか?またはそれほど複雑ではありませんか?前もって感謝します
for (int k = 0; k<arr.length; k++){
for (m = k; m<arr.length; m++){
//do something
}
}
その複雑さを Big-O 記法で表現するにはどうすればよいですか? 外側のループのインデックスに応じて 2 番目の for ループが変化するため、少し混乱しています。まだO(n^2)ですか?またはそれほど複雑ではありませんか?前もって感謝します
for (int k = 0; k<arr.length; k++){
for (m = k; m<arr.length; m++){
//do something
}
}
あなたの見積もりは、進行式から得られます。
したがって、 ですO(n^2)
。なぜあなたのケースは進行中ですか?n + (n-1) + ... + 1
ループの合計だからです。
2 番目のループの反復をすべて追加すると、1+2+3+...+n となり、これは n(n+1)/2 (n は配列の長さ) と等しくなります。つまり、n^2/2 + n/2 です。すでにご存知かもしれませんが、big-oh 表記の関連する用語は、最大の累乗の 1 つであり、係数は関係ありません。したがって、複雑さはまだ O(n^2) です。
実行時間は n^2 ループの cca 半分です
それが役に立てば幸い