【資料結構】查詢結構(二叉排序樹、ALV樹、雜湊技術雜湊表)

love_Aym發表於2018-06-08
查詢:就是根據給定的某個值,在查詢表中確定一個其關鍵字等於給定值的資料元素(或記錄)。
  • 靜態查詢表:只作查詢操作的查詢表。
  • 動態查詢表:查詢過程中,同時進行插入或刪除元素的工作。
為了提高查詢的效率,需要轉麼為查詢操作是指資料結構,這種面向查詢操作的資料結構成為查詢結構。

一、順序查詢表(線性表,不要求元素有序)


1、for迴圈多次比較


2、while迴圈,減少比較次數(i<=n)


時間複雜度O(n)

缺點:n很大時朝趙效率極為地下

優點:演算法簡單,對靜態查詢表的記錄滅有任何要求。

適合:小型資料的查詢時適用。


二、有序查詢表(要求元素有序)

1、折半查詢(二分法查詢)

前提:線性表中的記錄柏旭是關鍵碼有序(通常從小到大有序),線性表柏旭採用順序儲存。

基本思想:略

時間複雜度:O(logn)。完全二叉樹的深度為[logn]+1,遠遠浩宇順序查詢的O(n)。


2、插值查詢(對二分查詢的改進:mid值進行改進)

插值:

  • 在離散資料的基礎上補插連續函式,使得這條連續曲線通過全部給定的離散資料點。
  • 插值是離散函式逼近的重要方法,利用它可通過函式在有限個點處的取值狀況,估算出函式在其他點處的近似值。插值:用來填充影像變換時畫素之間的空隙。

  • 適用:表長較大,關鍵字分佈比較均勻的查詢表。
  • 不適用:分佈極端不均勻的查詢表。

3、斐波那契查詢

二、線性索引查詢

1、稠密索引

2、分塊索引

3、倒排索引

三、二叉排序樹

二叉排序樹的前提是二叉樹。

對二叉排序樹進行中序遍歷時,得到的就是一個有序的序列。

1、二叉排序樹的查詢(遞迴)

2、二叉排序樹插入操作

通過與葉子結點進行比較,然後根據二叉排序樹的規則進行插入

3、二叉排序樹的刪除

三種情況:

1)刪除葉子結點--直接刪除即可

2)僅有左或右子樹的結點:刪除結點後,講它的左子樹或右子樹整體移動到刪除結點的位置即可,可以理解為獨子繼承父業。

3)左右子樹都有結點:---找刪除結點的前驅或者後繼結點來替換。

二叉排序樹總結:

四、平衡二叉樹(AVL樹)

ALV的由來:

平衡因子BF:將二叉樹的左子樹深度減去右子樹深度的值。

具體細節比較複雜,略。

五、多路查詢樹

1、2-3樹

2、2-3-4樹

3、B樹

六、雜湊表查詢(雜湊樹)

1、雜湊函式的構造方法

原則:

最常用方法:除留餘數法

        

        如果沒有衝突,雜湊查詢是介紹的所有查詢中效率最高的,因為時間複雜度為O(1)。但是沒有衝突的雜湊只是一個理想,在實際的應用中衝突是不可避免的。

查詢結構總結

 

相關文章