哈希查找是通过计算数据元素的存储地址进行查找的一种方法。
将元素通过某个函数,转化为一个数(x),尽可能的让这些元素对应的数具有唯一性,查找时即可通过函数f(x)来找到元素所在的为位置(hash表也就是某种函数的对应关系)
#除法取余法来实现的哈希函数
def myHash(data,hashLength,):
return data % hashLength
#哈希表检索数据
def searchHash(hash,hashLength,data):
hashAddress = myHash(data,hashLength)
#指定hashAddress存在,但并非关键值,则用开放寻址法解决
while hash.get(hashAddress) and hash[hashAddress] != data:
hashAddress += 1
hashAddress = hashAddress%hashLength
if hash.get(hashAddress) == None:
return None
return hashAddress
def insertHash(hash,hashLength,data):
hashAddress = myHash(data,hashLength)
#如果key存在说明应该被别人占用,需要解决冲突
while (hash.get(hashAddress)):
hashAddress += 1
hashAddress = myHash(hashAddress,hashLength)
hash[hashAddress] = data
hashLength = 20
L = [13,29,27,28,26,30,38]
hash = {}
for i in L:
insertHash(hash,hashLength,i)
result = searchHash(hash,hashLength,38)
if result:
print("数据已找到,索引位置在",result)
print(hash[result])
else:
print("没有找到数据")