平方探测法
第一次查找: f(key);第二次查找:f(key)+1^2)%B;第三次查找:f(key)±1^2)%B;第四次查找:f(key)+2^2)%B;第五次查找:f(key)±2^2)%B;
代码
import math
def Mod_create(num, hash_table):
mod_index = num % len(hash_table)
add = 1
flag = False
while True:
if hash_table[mod_index] == "0":
hash_table[mod_index] = num
break
else:
mod_index = (num + pow(add, 2)) % len(hash_table)
if mod_index > len(hash_table):
flag = True
if flag:
mod_index = (num + pow(-1 * add, 2)) % len(hash_table)
print(mod_index)
add += 1
if __name__ == '__main__':
data_all = [12, 65, 70, 99, 33, 67, 48, 99,99]
hash_tables = ["0"] * 13
for i in range(len(data_all)):
Mod_create(data_all[i], hash_tables)
print(hash_tables)