哈希表
1.什么是哈希表:
是根据键(Key)而直接访问在内存存储位置的数据结构,也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。
它是一种数据结构:并且是在不用进行数据比较的情况下查找数据,时间复杂度为O(1),让数据与其存储的内存空间建立一一对应的关系,时间复杂度为O(1)。
2.具体内容
-
哈希表: 可以在 O(1) 的时间复杂度内找到元素;
-
哈希函数: Hash(key) = key % capacity;
-
哈希冲突: 不同的关键字计算出相同的哈希地址;(这是哈希表无法解脱的桎梏,一旦使用哈希表,哈希冲突是无法避免的,只能通过巧妙的设计哈希函数,尽量减少哈希冲突,而无法避免)
假设存储下面这10个元素:
通过哈希函数计算出存储地址,头插到链表中。相当于给每个桶中挂一个链表,为何要头插呢?提高效率,不用遍历链表。
那如果哈希函数是:Hash(key) = key % 10;并且存储的数的个位数相同,这样就形成了哈希冲突。
<