web-dev-qa-db-ja.com

O(...)とは何ですか?どのように計算しますか?

助けて!アルゴリズムまたはコードのBig-Oを分析する必要がある場所に質問があります。

  • Big-Oとは何か、それがBig-Thetaやアルゴリズムの複雑さを分析する他の手段とどのように関連するのか、正確にはわかりません。

  • Big-Oがコードを実行する時間を指すのか、それが必要とするメモリの量(スペース/時間のトレードオフ)を指すのかわかりません。

  • 私はコンピューターサイエンスの宿題をしていて、ループ(おそらく再帰的なアルゴリズム)を取り、Big-Oを考え出す必要があります。

  • 既知のBig-Oを持つ2つのデータ構造またはアルゴリズムのどちらかを選択できるプログラムに取り組んでいますが、どちらを選択するかわかりません。

Big-Oを計算して自分のプログラム、宿題、またはコンピューターサイエンスの一般的な知識に適用する方法を理解するにはどうすればよいですか?

注:この質問は、他のBig-O質問 コミュニティによって決定されます の正規の重複ターゲットです。多くのBig-Oの質問に役立つ情報を大量に含めることができるように、意図的に広くなっています。これが広いという事実を、同様の質問が受け入れられることを示すものとして使用しないでください。

31
mowwwalker

O(...)はBig-O表記を指します。これは、アルゴリズムが何かを実行するためにいくつの操作を行うかを簡単に説明する方法です。これは time複雑性として知られています

Big-O表記では、アルゴリズムのコストは、その数が最も多い演算で最もコストがかかります。アルゴリズムがn3 + n2 + nステップ、それはO(n)。リスト内の各アイテムをカウントするアルゴリズムは、線形時間と呼ばれるO(n)時間で動作します。

ウィキペディアの名前と古典的な例のリストについては、 一般的な関数の順序

関連資料:

22
MaxGabriel