演算法研究:靜態尋找表

來源:互聯網
上載者:User

尋找表(Search table)是由同一類型的資料元素(或記錄)構成的集合。關鍵字(key)是資料元素中某個資料項目的值, 又稱為索引值,用它可以表示一個資料元素,也可以標識一個記錄的資料項目(欄位),稱之為關鍵碼。若此關鍵字可以唯一地 標識一個記錄,則稱此關鍵字為主關鍵字(primary key)。而對於那些可以識別多個資料元素(或記錄)的關鍵字,稱為次 關鍵字(Secondary Key),次關鍵字也可以理解為不以唯一標識一個資料元素(或記錄)的關鍵字,它對應的資料項目就是次 關鍵碼。

尋找(Searching)就是根據給定的某個值,在尋找表中確定一個其關鍵字等於給定值的資料元素(或記錄 )。

尋找表按照操作方式來分有兩大種:靜態尋找表和動態尋找表。

靜態尋找表(Static Search Table) : 只作尋找操作的尋找表,主要操作為:

(1)查詢某個“特定的”資料元素是否在尋找表中。

(2)檢索某個 “特定的”資料元素和各種屬性。

動態尋找表(Dynamic Search Table):在尋找過程中同時插入尋找表中不存在的 資料元素,或者從尋找表中刪除已經存在的某個資料元素。

(1)尋找時插入資料元素。

(2)尋找時刪除數 據元素。

本文先來說說靜態尋找表。

一、順序表尋找

順序尋找(Sequential Search)又叫線性尋找 ,是最基本的尋找技術,它的尋找過程是:從表中的一個(或最後一個)記錄開始,逐個進行記錄的關鍵字和給定值比較, 若某個記錄的關鍵字和給定值相等,則尋找成功,找到所查的記錄;如果直到最後一個(或第一個)記錄,其關鍵字和給定 值都比較不相等時,則表中沒有所查的記錄,尋找不成功。

二、有序表尋找

1、折半尋找

折半尋找( Binary Search)技術,又稱為二分尋找。它的前提是線性表中的記錄必須是關鍵碼有序(通常從小到大有序),線性表必須 採用順序儲存。折半尋找的基本思想是:在有序表中,取中間記錄作為比較對象,若給定值與中間記錄的關鍵字相等,則查 找成功;若給定值小於中間記錄的關鍵字,則在中間記錄的左半區繼續尋找;若給定值大於中間記錄的關鍵字,則在中間記 錄的右半區繼續尋找。不斷重複上述過程,直到尋找成功,或所有尋找地區無記錄,尋找失敗為止。

2、插值尋找

插值尋找(Interpolation Search)是根據要尋找的關鍵字key與尋找表中最大最小記錄的關鍵字比較後的尋找方法 ,其核心就在於插值的計算公式 (key-a[low])/(a[high]-a[low]) 。

3、斐波那契尋找

斐波那契尋找 (Fibonacci Search)演算法的核心在於

1)當key = a[mid] 時,尋找就成功;

2)當key < a[mid] 時,新 範圍是第low 個到第mid - 1個,此時範圍個數為F[k-1]-1個。

3)當key > a[mid] 時,新範圍是第m+1 個到第 high個,此時範圍個數為F[k-2]-1個。

如圖8-4-13所示。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.