哈希表、映射和集合
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']