哈希表概念

哈希概念

哈希是为了实现快速查找的一种方法,时间复杂度为O(1),通过哈希函数将元素的储存位置与它的关键码之间建立一一映射的关系,因次可以快速找到该元素。

比如储存数据集合,{1,2,3,4,5,8}

哈希函数设置为hash(key) = key%capacity,capacity是储存空间的大小。(此时capacity为10)

 但我们会发现当插入,11,21,1这些元素时,会映射到相同的哈希地址,这种情况叫做哈希冲突。为了解决这一问题,我们需要设置合理的哈希函数。

哈希冲突的解决

有两种常见的方法,闭散列和开散列。

闭散列:

也叫开放定址法,当发生哈希冲突时,如果哈希表未被装满,说明在哈希表中必然还有空位置,那
么可以把key存放到冲突位置中的“下一个” 空位置中去。

 而如何寻找下一个空位置呢?

就需要线性探索,从发生冲突的位置开始,依次向后探测,直到寻找到下一个空位置为止。

开散列:

开散列法又叫链地址法(开链法),首先对关键码集合用散列函数计算散列地址,具有相同地址的关键码归于同一子集合,每一个子集合称为一个桶,各个桶中的元素通过一个单链表链接起来,各链表的头结点存储在哈希表中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学c的长弓狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值