バイナリ検索と補間検索の組み合わせの背後にある研究や理論はありますか?
私は読んで、このアルゴリズムはまだバイナリ検索アルゴリズムとみなすことができるの?数年前、ログファイルのインデクサー/検索を作成して、日付/時刻ウィンドウごとに大きなプレーンテキストファイル内のログエントリを見つけることを思い出しました。 これをしている間、私は補間検索を試すことにしました(それがそれが何であるかわからなかったので、自分でアイデアを見つけました)。その後、何らかの理由で、補間ステップとバイナリ分割ステップを交互に行うというアイデアを続けました。ステップ0では、テストポイントを決定するために補間し、ステップ1では正確な中間点などを取得します。 次に、純粋な補間検索、純粋なバイナリ検索、および組み合わせの試行を使用して、システムのベンチマークを行いました。交互アプローチは、時間とランダムに選択された時間のセットを見つける前に必要なテストの数の両方で明確な勝者でした。 リンクされた質問に触発されて、「代替補間検索とバイナリ検索」をすばやく検索したところ、何も見つかりませんでした。答えの1つに対するコメントで示唆されているように、「ヘッジ補間検索」も試しました。 既知のものにつまずいたことがありますか?特定の種類のデータに対して高速であるという理論的な正当性はありますか?通常、ログファイルはその間は大きく(たとえば、検索する1,000万行の1-2 GBのテキスト)、その中の日付/時間の広がりは、アクティビティの激しいバースト、一般的なピーク時間、および静かな時間で複雑でした。私のベンチマークテストは、検出するターゲット時間の均等な分布からサンプリングしました。