雜湊表(hash table,也叫雜湊表),是根據關鍵碼值(key value)而直接進行訪問的資料結構,它通過對映函式把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。關鍵碼值(key value)也可以當成是key的hash值,這個對映函式叫做雜湊函式。而存放記錄的陣列叫做雜湊表
根據上述的概念,我們可以理解:所有的key都會根據乙個方法計算出對應的hash值,而hash值都會儲存在乙個陣列中。陣列是乙個記憶體連續的記憶體塊,查詢速度快。如果我們得到乙個key,就可以快速定位到陣列的某個位置。而key儲存到乙個節點中,這個節點的前乙個節點位址就是陣列中儲存hash的記憶體位址。所以,每個key的hash都存在陣列中,而key則存在以陣列對應的某個元素為頭節點的鏈中。
現在我有一組key值[23,45,8,49,99,56],其中每乙個key都會根據某函式計算出hash,具體的儲存方式如下圖:
這樣會存在乙個問題,那就是hash衝突。也就是不同的key根據某函式計算出的hash是一樣,那該怎麼辦呢?看過hashmap原始碼的小夥伴都知道,hashmap是採用鏈位址的方法來解決hash衝突的。如下圖,如果存在乙個key=17的hash和key=49的hash值是一樣的。
由上圖可以看到,衝突的key值會連線到重複hash的key值所在的鏈中,這樣就解決了hash衝突的問題。而鍊錶對於增刪改查來說,效率是非常高。
歡迎提問,歡迎糾錯!
雜湊表(雜湊表)原理詳解
雜湊表 hash table,也叫雜湊表 是 根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做 雜湊函式 存放記錄的陣列叫做 雜湊表。或者 把任意長度的輸入 又叫做預對映,pre image 通過雜...
雜湊表(雜湊表)原理詳解
t什麼是雜湊表?雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的速度。這個對映函式叫做雜湊函式,存放記錄的陣列叫做雜湊表。記錄的儲存位置 f 關鍵字 這裡的對應關係f稱為雜湊函...
詳解雜湊表(雜湊表)原理
場景 在我們編寫基本的c語言 的時候,比如我們需要輸入乙個變數,然後對變數進行操作,最後返回乙個結果,那麼在我們對變數進行操作的時候,我們的編譯器就會對你的變數進行檢查,他會看你的變數是否定義 定義格式是否正確等。這裡就會存在查詢問題,如果我們採用二叉查詢樹等查詢樹來進行查詢的話會發現由於需要使樹保...