次SO urlはランダウの記号のためのいくつかの良い実例を提供しています。バイナリ検索パターン実装の詳細/利用状況に関する質問
What does O(log n) mean exactly?
私は、バイナリサーチのために提供される次の例では、特に興味:
"O(log n):人の名前を指定すると、あなたがまだ検索していない本の部分の半分についてランダムな点を選んで電話番号を探し、その人の名前がその時点で、本の一部を半分くらいまで繰り返して、人の名前があります。 (これは、人の名前のバイナリ検索です。)」
は私が不明確だこのことについていくつかのことがあります。正確な途中で検索して
は教科書バイナリ検索開始をいは、配列の偶数個の項目がある場合、テキストブックバイナリ検索アルゴリズムは、下位項目または上位項目をランダムに選択する必要がありますか?
テキストブックバイナリ検索で特定のデータポイント効率を上げるためにデータポイントのクラスタ化されたグループを検索するのか、またはバイナリ検索パターンでこれらのアプローチの1つ?
バイナリ検索は、ソート済み配列またはソート済み配列のどちらにも適用できますか?または、バイナリ検索を実行する前に、配列をプログラムでソートすることをお勧めしますか?
次のルーチンを使用して開始インデックスを識別することに問題はありますか:var startIndex = Math.Round(itemCount/2)。 –
itemCountが整数である場合(それがインデックスになるはずです)、数値を四捨五入することを心配する必要はありません。 – attaboy182
私のセットに5つのアイテムがある場合、次のstartIndexルーチンは2.5を返します:var startIndex = Math.Round(itemCount/2);私は2.5のインデックスを持つコレクションにアクセスすることができないので、Math.Roundは偶数または奇数の両方のシナリオをカバーするようです。 Math.Roundはここでより良い選択でしょうか? startIndexを識別するために通常使用するルーチンを記述できますか? –