[解決済み] 私の関数の時間的複雑さはどのくらいですか?重複
2023-01-24 21:29:11
質問
複雑さについて勉強を始めたが、これには苦労している。
void what(int n) {
int i;
for (i = 1; i <= n; i++) {
int x = n;
while (x > 0)
x -= i;
}
}
さて、最初のforループは、明らかに
O(n)
. 最初の反復は
O(n)
で、2回目は
O(n/2)
... そして、そのような
log(n)
を何度も繰り返すのでしょうか?
ということは
O(n) * O(log(n)) = O(n * log(n)) complexity
. これで良かったのでしょうか?
編集:(重複しないように)ビッグ・オーが何であるかは知っています。具体的な事例で正しい評価を聞いてきました。
どのように解決するのですか?
外側のループは
n
回実行されます。
各反復において、内部ループは
n / i
回実行されます。
総走行回数は
n + n/2 + n/3 + ... + n/n
漸近的に(整数の算術的丸めを無視して)、これは次のように単純化されます。
n * (1 + 1/2 + 1/3 + ... + 1/n)
この系列は緩やかに
n * log(n)
.
したがって、複雑さは O(N.log(N)) であり、期待通りです。
関連
-
[解決済み] mallocの結果はキャストするのですか?
-
[解決済み] O(log n)とは具体的にどのような意味ですか?
-
[解決済み] C言語では「?」演算子は何をするのですか?
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み] C++でextern "C "を使用した場合の効果は?
-
[解決済み] 簡単な面接問題が難しくなった:1~100の数字が与えられたとき、ちょうどk個の数字が欠けていることを見つけなさい。
-
[解決済み] Cコードの単体テスト【終了しました
-
[解決済み] C言語でファイルサイズを取得するには?[重複]する
-
[解決済み】C/C++の"-->"演算子とは何ですか?
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[C] レポートエラー 代入の左オペランドとしてlvalueが必要
-
VSCodeでCプログラムを書くとエラーになる:ソースファイル "stdio.h" を開くことができない
-
C++の配列コピー
-
C 言語のポインタ配列のポインタ型、ポインタに値を割り当てるために配列名を使用、コンパイル時の警告:互換性のないポインタ型からの初期化
-
[解決済み] CコードでEOFを表現する?
-
[解決済み] ビッグ・オー、どうやって計算・概算するんだ?
-
[解決済み] C言語で関数をパラメータとして渡すにはどうすればよいですか?
-
[解決済み] C言語のi++と++iに性能差はあるのでしょうか?
-
[解決済み] 講師が書いたC言語のファイルは、なぜ最初の行に#が一つ付いているのですか?
-
[解決済み】アルゴリズムの時間複雑性を求めるには?