複雑さ log2(n)/5 のソートされた配列で検索するためのアルゴリズムをコーディングしました。役に立ちますか?
5 に答える
比較操作のみを想定した検索では、O(log(n))より低くなることはできないことを証明できます。log2(n)/ 5の複雑さは、O(log(n))と同じです。
有用性は、それを何に使用するかによって異なります。
うーん。厳しい質問。あなたのアルゴリズムを投稿して、あなたが何をしているか見てみましょう。
ただし、実際に勝つためには、O(log2 log2 (n))? よりも優れている必要があります。それが補間検索が平均して行うことです..
配列がソートされていること以外に、配列に関する他の仮定がなければ、または事前計算/データ構造の作成がなければ、log₂n よりも優れた結果を出すことはできません。
探している要素が配列にない場合、どのように log₂n ステップ未満で終了することを提案しますか?
もちろん、非線形検索が線形検索よりも必然的に速いかどうかについては、いつでも議論できます: http://www.ddj.com/184405848
つまり、キャッシュ ラインを検索する場合は、分岐よりも直線的に検索する方が高速な場合があります。
実際には他の既存の O(logn) 検索アルゴリズムよりも高速であると便利だと思います。つまり、ベンチマーク テストで速度の向上が見られた場合です。ただし、非常に大きな入力の一定時間の改善 (1/5 など) の場合、大きな違いはありません。そのため、アルゴリズムの漸近的な複雑さが最も重要視されます。