A.は、直線状を探します
1.順次検索
同じキーワードやレコードの値を指定した場合は、キーワードを記録して、指定された値が続くテーブルの期間から始まる連続検索、、、あなたは、逆に、成功を見つけることも、テーブル全体をスキャンした後であればキーワードなしと指定された値
記録に等しい、ルックアップが失敗します。
この本は、2つのアルゴリズムを提供します。
7.1
int型search_seq(ssTable ST、キータイプキー) { ための式(I = ST.length; I> = 1; i--) IF(ST.R [I] .KEY ==キー)リターンI。 Oを返します。 } int型search_seq(ssTable ST、キータイプキー) { ST.R [0] =キー。 (i-- I = ST.length; ST.R [i]を.KEY =キー!)のために 私はリターン。 }
第2のアルゴリズムは、第1の改良され、それによって時間を短縮、I> = 0が決定され、各サイクルで除去されるべきです。しかし、2つのアルゴリズムのために必要な時間は、nの大きさに依存して、時間の複雑さはO(N)です。
利点:アルゴリズムは、テーブル番号の構造簡単です
短所:平均検索長、低効率、nの値は、低次検索効率が非常に大きいです。
2.バイナリ検索
中間要素は、要素がちょうど探している場合、アレイ素子の中央からの検索処理は、検索処理を終了する。特定の要素は、アレイ内の中間要素が大きいか又は中間要素ルックアップの半分よりも小さいより大きいまたは小さい場合、及びスタートのように真ん中の要素を比較し始めます。配列は、いくつかの段階で空の場合、それが見つかりません表しています。各比較検索が半分に減少するように、この検索アルゴリズム。
複雑:Tは、(N)= O(ログ2(N))、S(N)= O(1)。
場合の高速放電時間の複雑使用してデータをソートするために一次のうち格納されたデータ、O(nlog2(N))をので、合計時間複雑度は、T(N)= O(nlog2 (N))+ O(ログ2は、最上位のO =をとる(N))(nlog 2(N-))。
長所:比較的低い周波数と高い検索効率。
短所:順次ストレージ構造のためにのみ使用することができ、オブジェクトを見つけるには、アレイを注文する必要があります。注文データ処理の最初のソートでは、それは時間の無駄になります。そして、データの順序を保証するため、平均のインサートを比較し、削除し、時間がかかることになる要素の半分を移動するために、困難な動的な検索を実行します。第二に、データの量は、メモリ空間を超える連続し、バイナリサーチを行うことができないを提供することができます。
II。検索ツリーテーブル
1.バイナリ・ソートツリー
(1)であることが好ましい:O(ログ2 N-)を-完全二分木
(2)最悪:O(n)は---単一のツリー
III。ハッシュテーブル
リニアテーブルと木のテーブルの以前の方法を見つけ、関係なく、店舗の住所の、保存されたキーワードの比較上のノードの数と無効なノードの数が多いと比較するために見るには、検索速度につながることは非常にあり、多くの時間をベースとしています遅いです。
我々は、キーワードと、それが保存されている場所に直接ハッシュのルックアップを考えているこの関係に基づいてキーワードを探していたときに、その後、見つけるの間のリンクを確立する場合。
(1)及びハッシュ関数Hash住所:CONTACT-1に対応し、P Hは=その格納位置Pと鍵KEYレコード間(キー)H、Hは、ハッシュ関数と呼ばれているように、ハッシュアドレスPと呼ばれます。