算法基础--hash表(Python版)

哈希查找是通过计算数据元素的存储地址进行查找的一种方法。

将元素通过某个函数,转化为一个数(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("没有找到数据")

猜你喜欢

转载自blog.csdn.net/qq_41004007/article/details/82890226
今日推荐