1. 検索アルゴリズムとは何ですか?
ルックアップ アルゴリズムは、データ構造内の特定の要素を検索する方法です。
検索アルゴリズムは、データ構造内の特定の要素を見つけるためのアルゴリズムです。
ルックアップ アルゴリズムのパフォーマンスは、データ構造の性質とルックアップの効率によって決まります。
実際のアプリケーションでは、大量のデータの中から特定の条件を満たすデータを見つけ出す必要があることが多く、適切な検索アルゴリズムの選択はプログラムの効率に大きく影響します。
適切な検索アルゴリズムを選択すると検索効率が向上します。データ構造や特定のアプリケーション シナリオに応じて適切なアルゴリズムを選択する必要があります。
さまざまなデータ構造やシナリオには、さまざまな検索アルゴリズムが適しています。実際のアプリケーションでは、データ構造の性質や検索効率に応じて、適切な検索アルゴリズムを選択する必要があります。
2. 一般的な検索アルゴリズム
以下に、いくつかの一般的な検索アルゴリズムを示します。
2.1 線形検索(線形テーブル検索、逐次検索)
線形検索は最も単純な検索アルゴリズムです。
逐次検索は単純な検索アルゴリズムです。
データの最初の要素から、ターゲット要素が見つかるまで、またはすべての要素が走査されるまで、1 つずつ比較します。
データ構造の最初の要素から開始して、ターゲット要素が見つかるか検索が終了するまで、各要素を順番に比較します。
線形探索の時間計算量は O(n) です (n はデータのサイズです)。
シーケンシャル ルックアップの時間計算量は O(n) です。ここで、n はデータ構造の長さです。
順次検索は、小さなデータ構造またはソートされたデータ構造に適しています。
2.2 二分探索
二分探索は、順序付けられた配列内の特定の要素を見つけるアルゴリズムです。
二分探索は、順序付けられたデータ構造内の要素を見つけるためのアルゴリズムです。
二分探索は、二分探索ツリー、順序付き配列などの順序付きデータ構造に適しています。
二分探索の時間計算量は O(logn) です。ここで、n はデータ構造の長さです。
データ構造を 2 つの部分に分割し、ターゲット要素の位置に基づいてどちらの部分を検索するかを決定します。まず、配列を 2 つの部分に分割し、中央の要素とターゲット要素の間のサイズ関係を比較し、中央の要素がターゲット要素と等しい場合は返します。そうでない場合は、中央の要素間のサイズ関係に従って、対応する半分の検索を続けます。要素とターゲット要素。
2.3 ハッシュルックアップ(ハッシュテーブルルックアップ)
ハッシュ ルックアップは、ハッシュ関数を使用してキーを配列のインデックス位置にマップし、その位置を直接検索するアルゴリズムです。
ハッシュ テーブルは、キーを値にマップするデータ構造です。
ハッシュ テーブルは、ハッシュ関数を使用してキーを場所にマップし、検索をより効率的にします。
ハッシュ テーブルの検索と挿入の時間計算量は通常 O(1) です。
ハッシュ ルックアップの時間計算量は O(1)、
ハッシュ テーブルはハッシュの衝突問題を解決する必要があり、ハッシュ テーブルと起こり得る衝突の解決を保存するための追加のスペースが必要です。
2.4 インデックス検索
インデックス ルックアップは、ルックアップにインデックス テーブルとデータ テーブルを使用するアルゴリズムです。
まずインデックス テーブル内のキーワードに従って検索し、対応するインデックスを見つけてから、データ テーブル内のインデックスに従って検索します。
インデックス検索の時間計算量は、インデックス テーブルとデータ テーブルの構造とサイズによって異なります。
2.5 数値構造探索(二分探索木)
二分探索ツリーは、二分探索ツリーの各ノードが 2 つの子ノードを持つデータ構造です。
- 左側の子ノードの値が親ノードの値より小さい
- 右側の子ノードの値が親ノードの値より大きくなります。
二分探索木は探索効率を向上させることができ、二分探索の時間計算量は O(logn) です。
二分探索木における要素の挿入と削除の時間計算量は O(logn) です。