python 哈希算法_python---哈希算法实现

本文介绍了Python中自定义哈希表的实现,包括哈希算法、冲突解决方法(开放寻址法)以及增删查改操作。通过一个完整的哈希表类`HashTable`展示了哈希表的内部结构和工作原理。
摘要由CSDN通过智能技术生成

#coding = utf-8

classArray:def __init__(self, size=32, init=None):

self._size=size

self._items= [init] *sizedef __getitem__(self, index):returnself._items[index]def __setitem__(self, index, value):

self._items[index]=valuedef __len__(self):returnself._sizedef clear(self, value=None):for i inrange(self._items):

self._items[i]=valuedef __iter__(self):for item inself._items:yielditemclassSlot:"""定义一个哈希表数组的槽

注意:一个槽有三种状态

1. 从未被使用过,HashMap.UNUSED。 此槽没有被使用和冲突过,查找时只要找到UNUSED 就不用再继续探查了

2. 使用过但是remove了, 此时是HashMap.EMPTY,该点后面的元素仍可能是有key

3. 槽正在使用Slot 节点"""

def __init__(self, key, value):

self.key=key

self.value=valueclassHashTable:#表示slot 没有被使用过

UNUSED =None#使用过被删除

EMPTY =Slot(None, None)def __init__(self):#初始化,数组的每个元素都是UNUSED<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值