又稱為二分查詢。僅適用於有序的順序表。
基本思想:將給定的關鍵字和給定序列中間位置關鍵字比較,若相等則成功;若不相等,則在中間元素的前半部分或後半部分範圍重複查詢,直到找到,或查詢不成功。
查詢判定樹:
asl(成功)如上圖。
又稱為索引順序查詢。
基本思想:將查詢表分為若干子塊。塊內元素可以無序,但塊間是有序的。(即第乙個塊中最大關鍵字小於第二個塊中的所有關鍵字)
查詢過程:1.在索引表中確定待查記錄所在的塊(折半查詢或者順序查詢);
2.塊內順序查詢。
左子樹關鍵字《根關鍵字《右子樹關鍵字
非遞迴:
typedef
struct bitnodebitnode,
*bitree;
bitnode*
bstsearch
(bitree p,
int key)
else
if(keykey)
else
}return null;
}
遞迴
typedef
struct bitnodebitnode,
*bitree;
bitnode*
bstsearch
(bitree p,
int key)
else
else
if(keykey)
else
}}
b樹特性:
1.m階b樹每個結點至多有m個分支;
2.根結點且不是葉子結點至少有2個分支;
3.非根非葉子結點至少有【(m/2)上取整 】 個分支;
4.結點內關鍵字互不相等;
5.n個分支對應n-1個關鍵字;
6.關鍵字按遞增順序排列;
7.葉子結點都在同一層
8.所有結點包含資訊
9.不可以順序查詢
乙個關鍵字的空位子對應乙個分支
b+樹特性:
1.n個關鍵字n個分支;
2.m階b+樹每個結點至多有m個分支;
3.葉結點包含資訊,非葉結點只是索引作用
4.可以順序查詢
乙個關鍵字對應乙個分支
1.直接定位址法
h(key)=a*key+b
2.除留餘數法
h(key)=key%p
表長m,p是小於m但最接近m的質數。
解決衝突的方法
清除浮動方法(6種)
浮動元素 float屬性 讓元素進行浮動 left 左浮動 right 右浮動 清除浮動元素屬性 clear屬性 清除浮動 left 在左側不允許浮動元素 right 在右側不允許浮動元素 both 在左 右兩側不允許浮動元素 none 預設值。允許浮動元素出現在兩側 為什麼要清除浮動 當子元素設定...
兩種查詢方法
1.問題 寫出兩種檢索演算法 在乙個排好序的陣列t 1 n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0.按實驗模板編寫,分析 部分僅給出複雜度結果即可。2.解析 問題的理解和推導,可用電子版直接在此編寫,也可用紙筆推導,拍照嵌入本文件 1.順序查詢,最簡單最經典的思路,從...
資料的6種排序方法
今天講了堆排序,就這以前學過的排序方法,我來做乙個總結 1 選擇排序 選擇排序是比較基礎的排序方法,需要兩個迴圈,用於對每乙個數進行查詢和替換,不用多說,如下 includeint a 101 int main for i 0 i其實也沒什麼優點,關鍵是好想,對於初學者,是必須掌握的 2 氣泡排序 ...