1.什么是哈希表:
元素是链表的数组
Hash Table,也叫散列表,是根据关键码值(Key Value)而直接进行访问的的一种数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找速度。这个函数叫做散列函数,存放记录的数组叫做散列表。
哈希表隐藏了内部细节, 而对外的使用则非常的简单.只需定义key的hash函数和compare函数即可.
2.哈希表时间复杂度
建表复杂度O(n)
查找复杂度O(1)
插入复杂度O(1)
删除复杂度O(1)
3.哈希表适用条件
速度快,消耗内存多,适用于查找速度要求高且内存空间足够的时候
4.再哈希的触发条件
哈希表结构有两个重要的参数, 容量大小(Capacity)和负载因子(LoadFactor).两者的乘积 Capacity * LoadFactor决定了哈希表rehash的触发条件.
5..解决碰撞的方法:
链地址法:若碰撞则链接在后面,又叫闭哈希法
开放地址法(探测):若碰撞则放在下一个位置,又叫开哈希法
再哈希
建立公共溢出区
6.链地址法和开放地址法的优缺点比较:
(1)链地址法:
优点:适合表长不固定的情况
缺点:指针需要额外的空间
(2)开放地址法:
优点:适合节点规模小的情况
缺点:(a)处理溢出困难
(b)删除困难
(c)堆聚会引起进一步堆聚