資料結構之三大查詢

bo602505401發表於2016-03-08
                    資料結構之三大查詢

一.靜態查詢表

附:ASL(平均查詢長度)=∑ (1-n) P(i)C(i)
P(i):查詢表中第i個記錄的概率(個人理解:比較一次正確概率)。
c(i):當給定值與表中記錄相等時候,已經比較的次數,C(i)隨過程不同。

1.順序表的查詢
條件:順序表或者線性連結串列示的查詢表

成功查詢時平均查詢長度:(n+1)/2

失敗查詢時平均查詢長度:3(n+1)/4

2.有序表的查詢
(1) 折半查詢

成功查詢時平均查詢長度:[(n+1)㏒₂(n+1)]/2

(2)菲波那切查詢
適用:關鍵字均勻,表長大,其平均效能比折半查詢好

3.靜態樹表的查詢(各記錄查詢概率不等時)
(1)靜態最優查詢樹(權值高的在上面)
PH值最小。

代價太高,不討論→_→
(2)次優查詢樹
PH值近似最小

具體實現字數太多,這裡只列概念和框架,具體參見吳偉民辦資料結構P223
4.索引順序表的查詢
(1)分塊查詢,又稱索引順序查詢。
分塊有序:第一塊資料最小,依次增大。

方法:每塊有個最大值索引,和開始地址,比較就可以得到資料所在資料塊,然後在塊內可以順序查詢或者折半查詢(必須有序)。

二.動態查詢表
概念:表本身是在查詢過程中生成的,即找到關鍵字,成功返回,否則插入。

1.二叉排序樹和平衡二叉樹。
(1)二叉排序樹(二叉查詢樹)
左節點<跟節點<右節點
有類似於折半查詢的特性,連結串列,插入不需要移動。
刪除(看不懂)現成演算法在P230.

(2)平衡二叉樹(AVL樹)
深度:左右子樹深度差不超過1
平衡因子:絕對值不大於一
有點難,先跳過
2.b-樹和b+樹.
(1)b-樹
一棵m階的b-樹,或為空樹,或滿足下面特性的m叉樹
①樹中每個節點至多有m棵子樹。
②若不是葉子節點,至少有2棵子樹。
③若不是葉子節點,至少有m/2棵子樹。
④所有非終節點包含以下資訊(n關鍵字個數,A(i)指向子樹指標,K(i)存在關係A(i-1)

相關文章