哈希表、映射和集合
1.哈希表概念(Hash table)
(1)哈希表(Hash table),也稱爲散列表,是根據關鍵碼值(key value)而直接進行訪問的數據結構。
(2)它通過把關鍵碼值映射到表中的一個位置來訪問記錄,以加快查找的速度。
(3)這個映射函數叫做散列函數(Hash Function),存放記錄的數據叫做哈希表(或散列表)。
2.實踐應用
(1)電話號碼簿
(2)用戶信息表
(3)緩存(LRU Cache)
(4)鍵值對存儲(Redis)
3.哈希函數
(1)哈希函數示意圖
(2)出現衝突的情況
注:拉鍊式解決衝突法,如果哈希函數設計的好,查詢的時間複雜度就是O(1)。
(3)完整結構示意圖
4.哈希表時間複雜度分析
哈希表的時間複雜度,平均來說,如果哈希函數設計的好,發生衝突的情況非常少,操作的時間複雜度一般爲O(1),但是,如果哈希函數設計的不好,出現很多衝突的情況,那麼最差的情況下,時間複雜度則退化爲O(n)。
5.Python實現
(1)列表——list
#list
List1 = [1,2,3,4]
(2)字典——dict
#dict
map_x = {'張三':80,'李四':92,'王二':79}
(3)集合——set
#set
set_x = set(['jack','anna','lucy','tom','jack','tom'])
#此時,set_x = ['jack','anna','lucy','tom']