用除留余数法建立哈希表线性探测法解决冲突
时间: 2023-12-23 19:27:26 浏览: 178
假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的上限为2。哈希函数采用除留余数法构造,用线性探测再散列法处理冲突。
除留余数法是一种常用的哈希函数,它可以将关键字映射到哈希表的地址上。线性探测法是一种解决哈希冲突的方法,当发生冲突时,它会依次检查下一个位置,直到找到一个空闲的位置为止。
下面是使用除留余数法建立哈希表,并使用线性探测法解决冲突的示例代码:
```python
# 定义哈希表的大小
hash_table_size = 10
# 初始化哈希表
hash_table = [None] * hash_table_size
# 定义哈希函数(除留余数法)
def hash_function(key):
return key % hash_table_size
# 定义插入操作
def insert(key, value):
index = hash_function(key)
while hash_table[index] is not None:
index = (index + 1) % hash_table_size
hash_table[index] = (key, value)
# 定义查找操作
def search(key):
index = hash_function(key)
while hash_table[index] is not None:
if hash_table[index][0] == key:
return hash_table[index][1]
index = (index + 1) % hash_table_size
return None
# 插入关键字和值
insert(1, 'apple')
insert(11, 'banana')
insert(21, 'orange')
# 查找关键字对应的值
print(search(1)) # 输出:apple
print(search(11)) # 输出:banana
print(search(21)) # 输出:orange
```
在上述代码中,我们首先定义了哈希表的大小为10,并初始化了一个大小为10的哈希表。然后,我们定义了除留余数法作为哈希函数,将关键字映射到哈希表的地址上。接下来,我们定义了插入操作和查找操作,使用线性探测法解决冲突。最后,我们插入了几个关键字和对应的值,并进行了查找操作。
阅读全文