線形検索とバイナリ検索の違い
コンテンツ
線形検索とバイナリ検索は、配列で使用される2つの方法です。 探している 要素。検索とは、任意の順序で、またはランダムに保存された要素のリスト内の要素を見つけるプロセスです。
線形検索とバイナリ検索の主な違いは、バイナリ検索では要素のソートされたリストから要素を検索する時間が短くなることです。したがって、バイナリ検索法の効率は線形検索よりも大きいと推測されます。
2つの違いは、バイナリ検索の前提条件があることです。つまり、要素は ソート済み 線形検索では、そのような前提条件はありません。どちらの検索方法も、以下で説明する異なる手法を使用しています。
- 比較表
- 定義
- 主な違い
- 結論
比較表
比較の根拠 | 線形探索 | バイナリ検索 |
---|---|---|
時間の複雑さ | に) | O(ログ 2 N) |
ベストケースタイム | 最初の要素O(1) | 中心要素O(1) |
アレイの前提条件 | 必要なし | 配列はソート順でなければなりません |
N個の要素の最悪の場合 | N回の比較が必要です | ログのみで終了することができます2 N個の比較 |
実装可能 | 配列とリンクリスト | リンクリストに直接実装することはできません |
挿入操作 | リストの最後に簡単に挿入 | ソートされたリストを維持するには、適切な場所に挿入する処理が必要です。 |
アルゴリズムの種類 | 本質的に反復 | 自然の中で分割して征服する |
使いやすさ | 使いやすく、注文した要素は必要ありません。 | とにかくトリッキーなアルゴリズムと要素を順番に整理する必要があります。 |
コードの行 | もっと少なく | もっと |
線形検索の定義
線形検索では、配列の各要素が論理的な順序で1つずつ取得され、必要な要素であるかどうかがチェックされます。すべての要素にアクセスし、目的の要素が見つからない場合、検索は失敗します。最悪の場合、平均的なケースの数は、配列のサイズの半分(n / 2)をスキャンする必要があります。
したがって、線形検索は、指定されたアイテムを見つけるために配列を順番に走査する手法として定義できます。以下のプログラムは、検索を使用した配列の要素の検索を示しています。
効率 線形探索の
検索テーブルでレコードを検索する際に行われる時間の消費または比較の数によって、手法の効率が決まります。目的のレコードが検索テーブルの最初の位置に存在する場合、1つの比較のみが行われます。目的のレコードが最後のレコードである場合、n回の比較を行う必要があります。レコードが検索テーブルのどこかに存在する場合、平均して、比較の数は(n + 1/2)になります。この手法の最悪の場合の効率は、実行順序を表すO(n)です。
Cプログラム 線形検索手法で要素を検索します。
#含める バイナリ検索は非常に効率的なアルゴリズムです。この検索手法は、可能な限り最小限の比較で特定のアイテムを検索する時間を短縮します。バイナリ検索を行うには、まず配列要素を並べ替える必要があります。 この手法の背後にあるロジックを以下に示します。 3つのケースが発生する可能性があります。 検索領域で要素が見つかるかなくなるまで、同じ手順を繰り返します。このアルゴリズムでは、検索エリアが縮小するたびに。したがって、比較の数は最大でlog(N + 1)です。結果として、線形検索と比較すると効率的なアルゴリズムですが、バイナリ検索を実行する前に配列をソートする必要があります。 Cプログラム バイナリ検索手法で要素を見つける。 #含める アプリケーションによっては、線形検索アルゴリズムとバイナリ検索アルゴリズムの両方が役立つ場合があります。配列がデータ構造であり、要素がソートされた順序で配置されている場合、バイナリ検索が優先されます 速い検索。リンクリストが要素の配置方法に関係なくデータ構造である場合、バイナリ検索アルゴリズムの直接実装が利用できないため、線形検索が採用されます。 リンクリストは本質的に動的であり、中央の要素が実際に割り当てられている場所がわからないため、リンクリストに通常のバイナリ検索アルゴリズムを使用することはできません。したがって、バイナリ検索は線形検索よりも実行速度が速いため、リンクリストでも機能するバイナリ検索アルゴリズムのバリエーションを設計する必要があります。バイナリ検索の定義
結論