[解決済み] O(1), O(n log n), O(log n)の複雑さを持つアルゴリズムの例
2022-05-24 16:44:51
質問
私たちが日常的に使っているアルゴリズムで、O(1)、O(n log n)、O(log n)の複雑さを持つものは何でしょうか?
どのように解決するのですか?
あなたが質問に与えられたような時間の複雑さを持つアルゴリズム/ステートメントのグループの例をしたい場合は、ここで小さなリストです - 。
O(1)
時間
- 配列のインデックスにアクセスする (int a = ARR[5];)
- リンクリストへのノードの挿入
- スタックへのプッシュとポッピング
- キューへの挿入と削除
- Arrayに格納されたツリーのノードの親や左子・右子の検索
- 二重リンクリストの次/前の要素へのジャンプ
O(n)
時間
一言で言えば、すべてのブルートフォースアルゴリズム、または線形性を必要とするNoobアルゴリズムは、O(n)の時間複雑性に基づいています。
- 配列のトラバース
- リンクリストの走査
- 線形探索
- リンクリストの特定要素の削除 (ソートされていない)
- 2つの文字列を比較する
- 回文かどうかのチェック
- カウント/バケットソート などなど、このような例は他にもたくさんあります。
O(log n)
時間
- バイナリサーチ
- 二項探索木における最大/最小の数を求める。
- 線形関数に基づく特定の分割統治アルゴリズム
- フィボナッチ数の計算 - 最適な方法 基本的な前提は、完全なデータを使用しないこと、そして、反復するごとに問題サイズを小さくすることです。
O(n log n)
時間
log n'のファクターは、Divide and Conquerを考慮することで導入されています。これらのアルゴリズムの中には、最適化されたものがあり、頻繁に使用されています。
- マージソート
- ヒープソート
- クイックソート
- O(n^2) アルゴリズムの最適化に基づく特定の分割統治アルゴリズム
O(n^2)
時間
これらは、O(nlogn)の対応するものが存在する場合、効率の悪いアルゴリズムであると思われます。一般的なアプリケーションは、ここでBrute Forceになるかもしれません。
- バブルソート
- 挿入ソート
- 選択ソート
- 単純な2次元配列のトラバース
関連
-
[解決済み] 山積みされた靴下を効率よく組み合わせるには?
-
[解決済み] O(log n)とは具体的にどのような意味ですか?
-
[解決済み] ゲーム「2048」の最適なアルゴリズムとは?
-
[解決済み] Pythonスクリプトのプロファイリングはどのように行うのですか?
-
[解決済み] リスト内の重複を削除する
-
[解決済み] 32ビット整数のセットビットの数を数えるには?
-
[解決済み] 円周率の計算が正確かどうかを判断するにはどうしたらよいですか?
-
[解決済み] ヒープの構築はどうして時間計算量O(n)になるのですか?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
最新
-
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 実装 サイバーパンク風ボタン