哈希表冲突处理方案--python版

本文介绍了哈希表的基本原理和Python中的实现,特别是哈希函数的设计和冲突处理方案,包括分离链表和开放寻址法。线性探测、二次探测和迭代探测作为开放寻址的变种,各有优缺点,其中Python的dict类采用了迭代探测策略来避免冲突。

面试虐我千百遍,我待面试如初恋!不去面试一下真不知道自己有多水。

哈希表

哈希表是一种数据结构,python中的dict类就是通过哈希表来实现的。在哈希表中映射关系支持使用键作为索引的抽象:假设在一个映射中含有n​n​n个元组,对于一些N≥n​N\geq n​Nn情况,使用范围在(0,N−1)​(0,N-1)​(0,N1)的整数作为键,因此可以使用长度为N​N​N的查找表来表示这个映射。在哈希表中__getitem____setitem____delitem__等基本映射操作都可以在最坏情况下以O(1)​O(1)​O(1)的时间复杂度完成。

哈希函数

在哈希表中是使用哈希函数来将每个一般的键映射到一个表中的相应索引上。在理想情况下,键将由哈希函数分布到从0到N-1的范围内,但是在实践中可能有两个或者更多的不同键被映射到同一索引上,这也就是我们一会儿要讨论的哈希表冲突。因此,我们将表概念化为桶数组,其中每一个桶都管理一个元组集合,而这些元组则通过哈希函数发送到具体的索引。

哈希函数h​h​h的目标就是把每个键k​k​k映射到[0,N−1]​[0,N-1]​[0,N1]区间内的整数,其中N​N​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值