可以標識乙個記錄的某個資料項
適用於:查詢集合一經生成,便只對其進行查詢,而不進行插入和刪除操作,或經過一段時間的查詢之後,集中地進行插入
和刪除等修改操作。
適用於:查詢與插入和刪除操作在同乙個階段進行,例如當查詢成功時,要刪除查詢到的記錄,當查詢不成功時,要插入被查詢的記錄。
面向查詢操作的資料結構,即查詢基於的資料結構
線性表:適用於靜態查詢(順序查詢、折半查詢)
樹:適用於動態查詢(二叉排序樹上的查詢)
雜湊表:適用於靜、動態查詢(雜湊查詢)
查詢演算法時間效能通過關鍵碼的比較次數來度量。
定義:查詢成功時,asl是為確定資料元素在表中的位置所進行的關鍵碼比較次數的期望值。
含義:n :查詢表含n個資料元素
pi :表中第i個資料元素的查詢概率
ci :表中第i個資料元素的關鍵碼與給定值kx相等,按某演算法查詢時關鍵碼的比較次數。
不同查詢演算法ci不同
從線性表的一端向另一端逐個將關鍵碼與給定值進行比較
我們通過設定"哨兵"免去了在查詢過程中每一次比較都要判斷查詢位置是否越界,提高查詢效率。
資料型別表述
typedef
struct
s_t;
int
s_search
(s_t *t,keytype kx)
查詢成功時,平均長度為(等概率):(n+1)/2
查詢失敗時,關鍵碼的比較數總是n+1次
時間複雜度為:o(n);
優點
缺點
演算法適用範圍
順序儲存、鏈式儲存
在有序表中,取中間元素作為比較物件
例:查詢值為22的記錄過程
}從折半查詢過程看,以表的中點為比較物件,並以中點將表分割為兩個子表,對定位到的子表繼續這種操作。所以,對錶中每個資料元素的查詢過程,可用二叉樹來描述,稱這個描述查詢過程的二叉樹為判定樹。
在折半查詢成功時,關鍵碼比較次數至多為log2
(n+1
)\log_2 (n+1)
log2(
n+1)
折半查詢的時間效率為o(log2
n\log_2 n
log2n
)記錄按關鍵碼有序、順序儲存優點
缺點索引順序表結構:
需要將檔案劃分為若干塊,且要求分塊有序。
這裡不做要求,可自行學習。
若查詢樹為空,查詢失敗
查詢樹非空,將給定值kx與查詢樹的根節點關鍵碼比較。
若相等,查詢成功,結束查詢過程:否則,
雜湊查詢:是一種重要的儲存方式,又是一種查詢方法,又稱雜湊
雜湊表:按雜湊儲存方式構造的動態表稱為雜湊表,又稱為雜湊表
雜湊函式:是雜湊表查詢的核心,用以計算記錄的關鍵字在雜湊表中的儲存位址
雜湊表的表示:用一維陣列h[0…m-1]表示,m為表長
雜湊查詢考慮的主要問題
直接定址法;
隨機數法
數字分析法
平方取中法
當衝突發生時,形成乙個探查序列,沿著這個序列逐個探測,直到找到乙個「空」的開放位址,將發生衝突的關鍵字存放到該位址中去。
兩種探測方法
線性探測法:增量序列為 di = 1,2,3…m-1
二次探測法:增量序列為 di = 12,-12,22,-22… 例:
採用線性探測法解決衝突的方法思路清晰,演算法簡單
遇到衝突時,將產生衝突的記錄再雜湊到離衝突點最近的空位置上,從而又增加了更多的衝突機會,這種現象稱為聚集或者堆積
雜湊表的每個單元不是儲存相應的資料元素的關鍵碼,而是儲存相應單鏈表的表頭指標。
單鏈表中的每個結點由動態分配產生,可以方便地插入和刪除結點。
優點:能較好地解決溢位問題,易於實現刪除操作
缺點:儲存空間需要增加乙個鏈域;若雜湊函式的均勻性較差,則會造成基本雜湊表儲存區中空閒單元較多。
查詢 資料結構
分類 資料結構與演算法 c c 2012 07 24 16 17 614人閱讀收藏 舉報幾種查詢演算法 順序查詢,折半查詢,分塊查詢,雜湊表 一 順序查詢的基本思想 從表的一端開始,向另一端逐個按給定值kx 與關鍵碼進行比較,若找到,查詢成功,並給出資料元素在表中的位置 若整個表檢測完,仍未找到與k...
資料結構 查詢
查詢 searching 也稱 檢索,查表,就是在大量的資訊集中尋找乙個特定的資訊元素。查詢就是根據 給定的關鍵字值,在 查詢表中確定乙個關鍵字等於給定的 記錄或資料元素。若存在這樣的資料元素,則稱查詢成功的,否則查詢不成功。查詢是許多重要的電腦程式中 最耗費時間的部分,查詢演算法的優劣密切關係著查...
資料結構 查詢
一.靜態查詢表 靜態查詢表是僅對查詢表進行查詢操作,而不能改變其中資料的線性表,可以是基於陣列的順序儲存或以線性鍊錶儲存。靜態查詢表主要有順序表 有序順序表和索引順序表三種。1.順序查詢 函式模型 int seqsearch element list,int searchnum,int n 2.折半...