本來準備用乙個文章來寫關於查詢表這一塊的,結果發現內容實在太多了,所以現在決定分為以下三部分進行.
1.查詢表的概念
2.靜態查詢表
3.動態查詢表
4.
hash表,以及map
本文是查詢表系列之一:查詢表的概念
定義:
查詢表:是由同一型別的資料元素(或記錄)構成的集合,由於「集合」中的資料元素之間存在著鬆散的關係,因此查詢表是一種應用靈便的資料結構。
對查詢表的操作:
檢索某個「特定的」資料元素的各種屬性;在查詢表中插入乙個資料元素;從查詢表中刪去某個資料元素。分類:
按照記錄在表中的位置和它的關鍵字之間的關係可以分為:靜態查詢表動態查詢表和hash表。
其中靜態查詢表和動態查詢表都是:記錄在表中的位置和它的關鍵字之間不存在乙個確定的關係。
hash表:記錄在表中的位置和它的關鍵字之間存在乙個確定的關係。
靜態查詢表:
僅作查詢和檢索操作的查詢表。
動態查詢表
在查詢過程中同時插入查詢表中不存在的資料元素,或者從查詢表中刪除已存在的某個資料元素,此類表為動態查詢表。
雜湊表:
根據設定的雜湊函式 h(key)和所選中的處理衝突的方法,將一組關鍵字映象到乙個有限的、位址連續的位址集 (區間)上,並以關鍵字在位址集中的「映象」作為相應記錄在表中的儲存位置,如此構造所得的查詢表稱之為「雜湊表」。
查詢效能分析:
無論是靜態查詢表還是動態查詢表,
查詢的過程均為給定值依次和關鍵字集合中各個關鍵字進行比較。查詢的效率取決於和給定值進行比較的關鍵字個數。不同的表示方法,其差別僅在於:關鍵字和給定值進行比較的順序不同。其平均查詢長度始終都不可能為零。(平均查詢長度asl始終為長度n的函式)
hash表中,記錄在表中位置和其關鍵字之間存在一種確定的關係,我們可以預先知道所查關鍵字在表中的位置,理想狀態下asl可以達到0,因為hash衝突等原因,雜湊表的平均查詢長度是a的函式,而不是n的函式。這說明,用雜湊表構造查詢表時,可以選擇乙個適當的裝填因子 a,使得平均查詢長度限定在某個範圍內。—— 這是雜湊表所特有的特點。
具體查詢表特徵分析:
靜態查詢表中
按儲存結構: 可以分為順序結構和鏈式結構
按元素的有序性:可以分為有序表和無序表
無序表和鏈式表的查詢方式,都需要遍歷整個表進行比對,而順序結構的有序表,可以通過折半查詢演算法來實現(具體演算法/演算法效能比較等參見靜態表一節)
分有塊序表
:將表分成幾塊,塊內無序,塊間有序;先確定待查記錄所在塊,再在塊內查詢。索引順序查詢:又稱分塊查詢
動態查詢表
特點:表結構本身是在查詢過程中動態生成。若表中存在其關鍵字等於給定值key的記錄,表明查詢成功;否則插入關鍵字等於key的記錄。
動態生成二叉排序樹(二叉查詢樹)--------平衡二叉樹--------b-樹b+樹
(本節主要是各種樹的查詢,增加,刪除等操作的演算法實現,放在最後實現)
hash表:
1) 雜湊(hash)函式是乙個映象,即:將關鍵字的集合對映到某個位址集合上,它的設定很靈活,只要這個位址集合的大小不超出允許範圍即可;
2) 由於雜湊函式是乙個壓縮映象,因此,在一般情況下,很容易產生「衝突」現象,即: key1¹key2,而f(key1) = f(key2)。
3).只能儘量減少衝突而不能完全避免衝突,這是因為通常關鍵字集合比較大,其元素包括所有可能的關鍵字,而位址集合的元素僅為雜湊表中的位址值
因此,在構造這種特殊的「查詢表」
時,除了需要選擇乙個「好」(
盡可能少產生衝突
)的雜湊函式之外;還需要找到一種「
處理衝突
」
的方法。
2.雜湊函式構造的方法:
3.處理衝突的方法:
「處理衝突」 的實際含義
1.開放定址法
2.再雜湊法
3.鏈位址法
下一節先實現hash表,然後模仿jdk中的hashmap自己山寨乙份
總論 第二章 演算法分析
演算法分析 演算法分析主要集中在時間複雜度和空間複雜度 這裡也只是有所了解,演算法中常見的就那幾個級別,具體還是要看後面的演算法再了解 空間複雜度 t n o f n 表示t n de增長率小於等於f n 也是在演算法分析中最主要使用的表達方式。f n 表示的是演算法t n 增長率的乙個上界,他不需...
無法查詢部門收支分析表
問題名稱 無法查詢部門收支分析表 問題現象 原因分析 問題主要原因可能是不正常操作導致軟體出現異常任務。解決方案 常規操作是通過系統管理來清除單據鎖定和清理異常任務。或者再資料庫裡對錶lockvouch和ap lock進行手工清除。對於個別情況可以採用執行以下語句來解決此問題。在對軟體進行備份之後,...
雜湊表查詢的效能分析
雜湊表的查詢過程基本上和造表過程相同。一些關鍵字可通過雜湊函式轉換的位址直接找到,另一些關鍵字在雜湊函式得到的位址上產生了衝突,需要按處理衝突的方法進行查詢。在處理衝突的方法中,產生衝突後的查詢仍然是給定值與關鍵碼進行比較的過程。所以,對雜湊表查詢效率的量度,依然用平均查詢長度來衡量。查詢過程中,關...