专业做网站公司排名,货代一般都去哪个网站找客户,wordpress 英文站,镇江网站建站哈希表
哈希表#xff08;hash table#xff09;#xff0c;又称散列表#xff0c;它通过建立键 key 与值 value 之间的映射#xff0c;实现高效的元素查询。具体而言#xff0c;我们向哈希表中输入一个键 key #xff0c;则可以在 时间内获取对应的值 value 。
1.基础…哈希表
哈希表hash table又称散列表它通过建立键 key 与值 value 之间的映射实现高效的元素查询。具体而言我们向哈希表中输入一个键 key 则可以在 时间内获取对应的值 value 。
1.基础结构
# 基础组成键值对
class pair:def __init__(self,key:int,value:str):self._key: intkeyself._value: strvalue2.哈希表键值对存储与索引结构桶 class has_cls:def __init__(self):# 扩容因子self.extend: int 0.75# 桶的容量self.capacity:int 100# 桶用于存储键值对self._bucket: list[pair][None]*self.capacity# 数据大小self._size:int0# 数据大小def size(self):return self._size# 索引与键的联系哈希函数def hash_fun(self,key:int):index key%self.capacityreturn index#查询def get(self,key):print(执行查询元素操作)index self.hash_fun(key)pair self.bucket[index]if pair None:return Nonereturn pair._value# 添加元素def put(self,key:int,value:str):print(执行添加元素操作)# 判断容量是否已经满了if self._size/self.capacity self.extend:self.extend_capacity# 根据key计算hash值index self.hash_fun(key)self._bucket[index] pair(key,value)self._size 1 # 删除元素def remove(self,key:int):print(执行删除元素操作)index self.hash_fun(key)if self._size 0 or self.capacityindex:raise IndexError(索引错误)self._bucket[index] Noneself._size - 1# 哈希扩容def extend_capacity(self):print(执行哈希扩容)self.capacity *2new_bucket [0]*self.capacityfor pair in self._bucket:if pair:index index._keynew_bucket[index] pairself._bucket new_bucket# 提取所有键值对def get_all_pair(self):print(提取所有键值对)res []if not self._size:raise ValueError(桶为空)else:for index in range(self._size):res.append(self._bucket[index])return res# 提取所有键def get_all_key(self):print(提取所有键)res []if not self._size:raise ValueError(桶为空)else:for index in range(self._size):pair self._bucket[index]res.append(pair._key)return res# 提取所有值def get_all_val(self):print(提取所有键)res []if not self._size:raise ValueError(桶为空)else:for index in range(self._size):pair self.bucket[index]res.append(pair._value)return resdef print(self):打印哈希表for pair in self._bucket:if pair is not None:print(pair._key, -, pair._value)测试
# p1 pair(1,小明)
# p2 pair(2,小刚)
# p3 pair(6,小菜)
p3 has_cls()
p3.put(6,小菜)
p3.put(3,小明)
p3.print()
p3.remove(6)
p3.print()