Python全系列 教程
3567个小节阅读:5929.3k
目录
鸿蒙应用开发
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
哈希表(Hash table)是一种常用、重要、高效的数据结构。
哈希表通过哈希函数,可以快速地将键(Key)映射到值(Value)。从而允许在近常数时间内对键关联的值进行插入、删除和查找操作。
哈希表的主要思想是通过哈希函数将键转换为索引,将索引映射到数组中的存储位置
通俗的例子是,为了查找电话簿中某人的号码,可以创建一个按照人名首字母顺序排列的表,在首字母为W的表中查找“王”姓的电话号码,显然比直接查找就要快得多。这里使用人名作为关键字
xxxxxxxxxx
class Pair:
"""键值对"""
def __init__(self, key: int, val: str):
self.key = key
self.val = val
def __repr__(self):
return f"{self.key} -> {self.val}"
class ArrayHashMap:
"""基于数组实现的哈希表"""
def __init__(self):
"""构造方法"""
# 初始化数组,包含 100 个桶
self.buckets: list[Pair | None] = [None] * 100
def hash_func(self, key: int) -> int:
"""哈希函数"""
index = hash(key) % 100
return index
def put(self, key: int, val: str):
"""添加操作"""
pair = Pair(key, val)
index: int = self.hash_func(key)
self.buckets[index] = pair
def get(self, key: int) -> str:
"""查询操作"""
index: int = self.hash_func(key)
pair: Pair = self.buckets[index]
if pair is None:
return None
return pair.val
def remove(self, key: int):
"""删除操作"""
index: int = self.hash_func(key)
# 置为 None ,代表删除
self.buckets[index] = None
def entry_set(self) -> list[Pair]:
"""获取所有键值对"""
result: list[Pair] = []
for pair in self.buckets:
if pair is not None:
result.append(pair)
return result
def key_set(self) -> list[int]:
"""获取所有键"""
result = []
for pair in self.buckets:
if pair is not None:
result.append(pair.key)
return result
def value_set(self) -> list[str]:
"""获取所有值"""
result = []
for pair in self.buckets:
if pair is not None:
result.append(pair.val)
return result
def print(self):
"""打印哈希表"""
for pair in self.buckets:
if pair is not None:
print(pair.key, "->", pair.val)
if __name__ == '__main__':
map = ArrayHashMap()
map.put('b', '百')
map.put('z', '战')
map.put('c', '程')
map.put('x', '序')
map.put('y', '员')
print(map.get('b'))
print(map.get('z'))
print(map.get('c'))
print(map.get('x'))
print(map.get('y'))
map.print()
print(map.entry_set())
实时效果反馈
1. 关于哈希表,说法错误的是?
A 哈希表是通过关键字映射到表中一个位置来访问记录
B 设计哈希表基本之一为:哈希函数的编写
C 设计哈希表基本之一为:键冲突解决算法
D 哈希表可以存储重复数据
答案
1=>D