面试虐我千百遍,我待面试如初恋!不去面试一下真不知道自己有多水。
哈希表
哈希表是一种数据结构,python中的dict类就是通过哈希表来实现的。在哈希表中映射关系支持使用键作为索引的抽象:假设在一个映射中含有nnn个元组,对于一些N≥nN\geq nN≥n情况,使用范围在(0,N−1)(0,N-1)(0,N−1)的整数作为键,因此可以使用长度为NNN的查找表来表示这个映射。在哈希表中__getitem__、__setitem__和__delitem__等基本映射操作都可以在最坏情况下以O(1)O(1)O(1)的时间复杂度完成。
哈希函数
在哈希表中是使用哈希函数来将每个一般的键映射到一个表中的相应索引上。在理想情况下,键将由哈希函数分布到从0到N-1的范围内,但是在实践中可能有两个或者更多的不同键被映射到同一索引上,这也就是我们一会儿要讨论的哈希表冲突。因此,我们将表概念化为桶数组,其中每一个桶都管理一个元组集合,而这些元组则通过哈希函数发送到具体的索引。
哈希函数hhh的目标就是把每个键kkk映射到[0,N−1][0,N-1][0,N−1]区间内的整数,其中NN

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

405

被折叠的 条评论
为什么被折叠?



