資料結構 查詢

2021-07-24 18:33:18 字數 1209 閱讀 8489

一般,假定被查詢的物件是由一組結點組成的表(table)或檔案,而每個結點則由若干個資料項組成。並假設每個結點都有乙個能惟一標識該結點的關鍵字。查詢(searching)的定義是:給定乙個值k,在含有n個結點的表中找出關鍵字等於給定值k的結點。若找到,則查詢成功,返回該結點的資訊或該結點在表中的位置;否則查詢失敗,返回相關的指示資訊。

基本思想是:從表的一端開始,順序掃瞄線性表,依次將掃瞄到的結點關鍵宇和給定值k相比較。若當前掃瞄到的結點關鍵字與k相等,則查詢成功;若掃瞄結束後,仍未找到關鍵字等於k的結點,則查詢失敗。

二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求:線性表是有序表,即表中結點按關鍵字有序,並且要用向量作為表的儲存結構。不妨設有序表是遞增有序的。

分塊查詢(blocking search)又稱索引順序查詢。它是一種效能介於順序查詢和二分查詢之間的查詢方法。

當用線性表作為表的組織形式時,可以有三種查詢法。其中以二分查詢效率最高。但由於二分查詢要求表中結點按關鍵字有序,且不能用鍊錶作儲存結構,因此,當表的插入或刪除操作頻繁時,為維護表的有序性,勢必要移動表中很多結點。這種由移動結點引起的額外時間開銷,就會抵消二分查詢的優點。也就是說,二分查詢只適用於靜態查詢表。若要對動態查詢表進行高效率的查詢,可採用下面介紹的幾種特殊的二叉樹或樹作為表的組織形式。不妨將它們統稱為樹表。下面將分別討論在這些樹表上進行查詢和修改操作的方法。

當查詢的檔案較大,且存放在磁碟等直接訪問裝置中時,為了減少查詢過程中對磁碟的讀寫次數,提高查詢效率,基於直接訪問裝置的讀寫操作以"頁"為單位的特徵。2023年r.bayer和e.m.mccreight提出了一種稱之為b-樹的多路平衡查詢樹。它適合在磁碟等直接訪問裝置上組織動態的查詢表。

設所有可能出現的關鍵字集合記為u(簡稱全集)。實際發生(即實際儲存)的關鍵字集合記為k(|k|比|u|小得多)。雜湊方法是使用函式h將u對映到表t[0..m-1]的下標上(m=o(|u|))。這樣以u中關鍵字為自變數,以h為函式的運算結果就是相應結點的儲存位址。從而達到在o(1)時間內就可完成查詢。

雜湊函式的選擇有兩條標準:簡單和均勻。

通常有兩類方法處理衝突:開放定址(open addressing)法和拉鍊(chaining)法。前者是將所有結點均存放在雜湊表t[0..m-1]中;後者通常是將互為同義詞的結點鏈成乙個單鏈表,而將此鍊錶的頭指標放在雜湊表t[0..m-1]中。

雜湊表上的運算有查詢、插入和刪除。其中主要是查詢,這是因為雜湊表的目的主要是用於快速查詢,且插入和刪除均要用到查詢操作。

查詢 資料結構

分類 資料結構與演算法 c c 2012 07 24 16 17 614人閱讀收藏 舉報幾種查詢演算法 順序查詢,折半查詢,分塊查詢,雜湊表 一 順序查詢的基本思想 從表的一端開始,向另一端逐個按給定值kx 與關鍵碼進行比較,若找到,查詢成功,並給出資料元素在表中的位置 若整個表檢測完,仍未找到與k...

資料結構 查詢

查詢 searching 也稱 檢索,查表,就是在大量的資訊集中尋找乙個特定的資訊元素。查詢就是根據 給定的關鍵字值,在 查詢表中確定乙個關鍵字等於給定的 記錄或資料元素。若存在這樣的資料元素,則稱查詢成功的,否則查詢不成功。查詢是許多重要的電腦程式中 最耗費時間的部分,查詢演算法的優劣密切關係著查...

資料結構 查詢

一.靜態查詢表 靜態查詢表是僅對查詢表進行查詢操作,而不能改變其中資料的線性表,可以是基於陣列的順序儲存或以線性鍊錶儲存。靜態查詢表主要有順序表 有序順序表和索引順序表三種。1.順序查詢 函式模型 int seqsearch element list,int searchnum,int n 2.折半...