👋 Hi, I’m @Beast Cheng
👀 I’m interested in photography, hiking, landscape…
🌱 I’m currently learning python, javascript, kotlin…
📫 How to reach me --> 458290771@qq.com
喜欢《数据结构》部分笔记的小伙伴可以订阅专栏,今后还会不断更新。🧑💻
感兴趣的小伙伴可以点一下订阅、收藏、关注!🚀
谢谢大家!🙏
散列表、散列函数
散列表(哈希表,Hash Table):是一种数据结构
- 特点是:可以根据数据元素的关键字计算出它在散列表中的存储地址
散列函数(哈希函数):Addr = H(key)
建立了 “关键字” -> “存储地址” 的映射关系
理想情况下,在散列表中查找一个元素的时间复杂度为
O
(
1
)
O(1)
O(1)
查找元素 19:根据散列函数计算出元素的存储地址
=
19
%
13
=
6
=19\%13=6
=19%13=6
冲突、同义词
冲突(碰撞):在散列表中插入一个数据元素时,需要根据关键字的值确定其存储地址,若该地址已经存储了其他元素,则称这种情况为“冲突(碰撞)”
如何减少“冲突”?
- 构造更适合的散列函数,让各个关键字尽可能地映射到不同的存储位置,从而减少“冲突”
那么,如何构造更适合的散列函数呢?
- 拉链法(又称链接法、链地址法):把所有“同义词”存储在一个链表中
- 开放定址法:如果发生“冲突”,就给新元素找另一个空闲位置