查詢:靜態查詢(順序查詢、折半查詢、分塊查詢)+動態查詢(二叉排序樹、平衡二叉樹、b-樹查詢)
一、靜態查詢:不改變原結構的順序。
1、順序查詢
逐個的與關鍵字進行比較。若找到相等的,則查詢成功;反之,失敗。
更適合順序儲存結構和鏈式儲存結構的查詢表
2、折半查詢
給定的序列是乙個有序序列。
把序列分成左中右,左《中《右;
把給定值與中間值進行比較,確定下次查詢是在左還是右;
繼續,知道成功或者失敗。
3、分塊查詢
順序查詢和二分法查詢的折中。先分塊,在塊中順序查詢。
塊間有序,塊內無序。
二、動態查詢
在查詢的同時,會改變表的結構。
比如在查詢的過程中同時插入查詢表中不存在的資料,或者從查詢表中刪除已經存在的某個資料
1、二叉排序樹
左子樹非空,則左子樹上所有節點值都小於根節點的值;
右子樹非空,則右子樹上所有節點值都大於根節點的值;
左右子樹本身就是兩棵二叉排序樹。
2、平衡二叉樹
或者一棵空樹
或者樹中任一節點左右子樹深度相差不超過1
三、hash表
雜湊表:根據關鍵字而直接進行訪問的資料結構。
建立了關鍵字和儲存位址之間的直接對映關係。
四、hash函式:
hash函式的方法:
1、直接位址法
h(key)=a*key+b;
2、除留餘數法
h(key)=key%p;
3、數字分析法
衝突解決發方法:
拉鍊法
開放位址法(線性探測、平方探測、再雜湊法)
hash表的查詢效率取決於三個隱私:雜湊函式、處理衝突的方法和填裝因子
填裝因子即為乙個表的填裝程度,為表中記錄數n/雜湊表長度m。
越大,則發生衝突的可能性越大
資料結構中的「查詢」(檢索)
內查詢和外查詢 都在記憶體中查詢即內查詢,外查詢還涉及外存,比如硬碟等。分類包括 1 線性表的查詢 又分順序查詢 二分查詢和分塊查詢。1 二分查詢又叫折半查詢 2 分塊查詢 線性表分成塊,每塊內部不要求有序,但塊塊之間應有序 2 樹表查詢 1 二叉排序樹 2 平衡的二叉排序樹 3 b樹 前面方法都只...
QT中的常用資料結構
qt中的常用資料結構 qstring 中使用最多的莫過於string,qstring提供了豐富的介面,使用方便,以下為常用介面 qvaluelist valuelist 是一般鍊錶結構,通用模板類 需提供相應類的拷貝建構函式 qvaluelist iterator qstringlist 繼承自qv...
查詢 資料結構
分類 資料結構與演算法 c c 2012 07 24 16 17 614人閱讀收藏 舉報幾種查詢演算法 順序查詢,折半查詢,分塊查詢,雜湊表 一 順序查詢的基本思想 從表的一端開始,向另一端逐個按給定值kx 與關鍵碼進行比較,若找到,查詢成功,並給出資料元素在表中的位置 若整個表檢測完,仍未找到與k...