雜湊表是陣列的公升級版, 在陣列中, 我們可以使用整數索引作為key, 而在雜湊表中, 我們可以使用任意的型別作為key.
當然這其中需要乙個轉化: anytype –> int, 而這個轉化函式就是雜湊函式.
anytype –> int 這個雜湊函式中, 由於陣列是定長的, 而anytype是無限的, 所以可能出現不同的anytype 會雜湊到相同的 int, 解決衝突的最簡單的兩種方法是:
在衝突的位置建立新的鍊錶, 這樣一次查表就轉化為hash + 遍歷.
如c所示, 如果發生衝突, 那麼就從衝突的位置開始接著往下找, 直到出現空位.
類似與列表的擴容, 當table 中的資料過多時, 衝突會越來越頻繁, 所以在裝填一定的資料後我們需要把table 擴容, 然後把資料拷貝到新table中
資料結構 雜湊表
1.雜湊表的定義 元素的儲存位置和它的關鍵碼之間建立乙個確定的對應關係h,使得每個關鍵碼key和唯一的儲存位置h key 相對應。在查詢時,根據這個確定的對應關係找到給定值k的對映h k 若查詢集合中存在這個記錄,則必定在h k 的位置上,這種查詢技術稱為雜湊技術。採用雜湊技術將記錄儲存在一塊連續的...
資料結構 雜湊表
雜湊表的定義 雜湊表 hash table,也叫雜湊表 是根據關鍵碼值 key value 而直接進行訪問的資料結構。也就是說,它通過把 關鍵碼值對映到表中乙個位置來訪問記錄,以加快查詢的 速度。這個對映函式叫做雜湊函式,存放 記錄的陣列叫做雜湊表。雜湊函式的析構方法 餘數法 取關鍵字被某個不大於雜...
資料結構 雜湊表
3 雜湊函式 數字分析法 根據關鍵碼在各個位上的分布情況,選取分布比較均勻的若干位組成雜湊位址。適用情況 能預先估計出全部關鍵碼的每一位上各種數字出現的頻度,不同的關鍵碼集合需要重新分析。4 雜湊函式 平方取中法 對關鍵碼平方後,按照雜湊表大小,取中間的若干位作為雜湊位址 平方後擷取 適用情況 實現...