線形検索は単純なアプローチであり、漸近的な複雑さのために、バイナリ検索はパフォーマンスよりも優れているといつも聞いています。しかし、バイナリ検索の前に並べ替えが必要な場合、線形検索よりも優れている理由を理解できませんでしたか?
線形検索はでO(n)
あり、バイナリ検索はO(log n)
です。これが、バイナリ検索の方が優れていると言う根拠のようです。ただし、バイナリ検索ではO(n log n)
、最適なアルゴリズムのためのソートが必要です。したがって、ソートが必要なため、バイナリ検索は実際には高速になりません。
著者は、単純な線形検索アプローチを使用するよりも挿入ソートで、アイテムを挿入する必要がある場所を見つけるためにバイナリ検索を使用する方が良いと示唆するCLRSを読んでいます。この場合、各ループ反復で、バイナリ検索を適用できるソート済みリストがあるため、これは正当化されているようです。しかし、検索が必要なデータセットについての保証がない一般的なケースでは、ソート要件のために実際にバイナリ検索を使用していないのは線形検索よりも悪いですか?
私が見落としている実用的な考慮事項はありますか?または、ソートに必要な計算時間を考慮せずに、バイナリ検索は線形検索よりも優れていると見なされますか?