資料結構- 雜湊表(HashTable)
10 Feb 2020 |雜湊表
雜湊表(HashTable),根據鍵值(key)直接查詢
在記憶體儲存的位置。也就是透過雜湊函數(hash function),計算鍵(Key)所對應的位置,進而找到對應值(value)
碰撞
當兩筆以上不同的資料進行雜湊函數運算時有著相同的結果,此時就會發生碰撞(Collision),碰撞問題太多,就會導致雜湊表效能變差,所以雜湊函數會盡量避免碰撞。
解決碰撞的方法有
- 開放定址(Opening Address):當發生碰撞時,會找出第二個替代位址儲存,若還是發生碰撞,會一直找到空的位址並且儲存值(value)
- 分離鏈結法(Separate Chaining):在每一個Hash value裡頭置放鏈結串列(Linked List),當資料有碰撞的情況時,就將值放入鏈結串列(Linked List)之中,但需要額外儲存鏈結串列(Linked List)
特性
-
雜湊表(HashTable)利用雜湊函數hash function進行搜尋,
搜尋時間複雜度為O(1)
-
新增、移除時間複雜度為O(1)
-
當發生碰撞時,通常會使用
開放定址(Opening Address)
、額外鏈結法(Separate Chaining)
這兩種方法解決
參考資料:
Comments