【資料結構】查詢結構(二叉排序樹、ALV樹、雜湊技術雜湊表)
查詢:就是根據給定的某個值,在查詢表中確定一個其關鍵字等於給定值的資料元素(或記錄)。
- 靜態查詢表:只作查詢操作的查詢表。
- 動態查詢表:查詢過程中,同時進行插入或刪除元素的工作。
為了提高查詢的效率,需要轉麼為查詢操作是指資料結構,這種面向查詢操作的資料結構成為查詢結構。
一、順序查詢表(線性表,不要求元素有序)
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)。但是沒有衝突的雜湊只是一個理想,在實際的應用中衝突是不可避免的。
查詢結構總結
相關文章
- 【PHP資料結構】雜湊表查詢PHP資料結構
- 資料結構——雜湊表資料結構
- 資料結構之「雜湊表」資料結構
- 資料結構 - 雜湊表,初探資料結構
- Day76.雜湊表、雜湊函式的構造 -資料結構函式資料結構
- JAVA資料結構之雜湊表Java資料結構
- 資料結構基礎--雜湊表資料結構
- 資料結構 - 雜湊表,再探資料結構
- 查詢(3)--雜湊表(雜湊查詢)
- 雜湊技術【雜湊表】查詢演算法 PHP 版演算法PHP
- 資料結構雜湊表(c語言)資料結構C語言
- 資料結構(二十八):雜湊表資料結構
- 雜湊,二叉樹,紅黑樹,B樹,B+樹,LSM樹等資料結構做索引比較二叉樹資料結構索引
- 【資料結構與演算法學習】雜湊表(Hash Table,雜湊表)資料結構演算法
- 樹雜湊
- 資料結構實驗之查詢七:線性之雜湊表資料結構
- 資料結構第十一節(雜湊表)資料結構
- 演算法與資料結構——雜湊表演算法資料結構
- 資料結構複習一:雜湊表的總結資料結構
- 資料結構和演算法-雜湊表 (HashTable)資料結構演算法
- 資料結構,雜湊表hash設計實驗資料結構
- 資料結構與演算法整理總結---雜湊表資料結構演算法
- 資料結構與演算法——雜湊表類的C++實現(分離連結雜湊表)資料結構演算法C++
- 資料結構與演算法——雜湊表類的C++實現(探測雜湊表)資料結構演算法C++
- 資料結構基礎 (程式碼效率優化, 線性表, 棧, 佇列, 陣列,字串,樹和二叉樹,雜湊表)資料結構優化佇列陣列字串二叉樹
- JavaScript資料結構——字典和雜湊表的實現JavaScript資料結構
- 資料結構與演算法分析 (雜湊)資料結構演算法
- javascript資料結構與演算法--雜湊JavaScript資料結構演算法
- C語言實現的資料結構之------雜湊表C語言資料結構
- 淺談演算法和資料結構(11):雜湊表演算法資料結構
- 資料結構 - 雜湊表,三探之程式碼實現資料結構
- P5043 樹雜湊
- Java關於資料結構的實現:雜湊Java資料結構
- 演算法與資料結構——雜湊衝突演算法資料結構
- 演算法與資料結構基礎 - 雜湊表(Hash Table)演算法資料結構
- 雜湊表(雜湊表)詳解
- Android技能樹 — 陣列,連結串列,雜湊表基礎小結Android陣列
- 雜湊資料結構以及在HashMap中的應用資料結構HashMap