构造哈希表,并查询关键字K(整数)在哈希表中的结果:查询成功,返回K在哈希表中的位置, 否则返回“fail”,并输出查找成功或失败时的比较次数【输入形式】先从标准输入读取整数的个数,然后从下一行开始输入各个整数,整数之间以一个空格分隔。第三行输入查询关键字K 【样例输入1】 12 19 14 23 01 68 20 84 27 55 11 10 79 55 【样例1输出】 5 3 【样例1说明】 原查找表共12个元素,第二行依次输入元素值19 14 23 01 68 20 84 27 55 11 10 79 ,需利用哈希表查找关键字55。 查询结果:55在哈希表位置5,共比较3次查询成功。 【样例输入2】 12 19 14 23 01 68 20 84 27 55 11 10 79 15 【样例2输出】 fail 12 【样例2说明】 原查找表共12个元素,第二行依次输入元素值19 14 23 01 68 20 84 27 55 11 10 79 ,需利用哈希表查找关键字15。 查询结果:查询失败,共比较12次获取查询结果。
时间: 2024-02-20 14:57:45 浏览: 63
哈希表的建立与查询
以下是Python3代码实现:
```python
# 哈希表大小
HASH_SIZE = 13
# 哈希函数
def hash_func(key):
return key % HASH_SIZE
# 构造哈希表
def build_hash_table(data):
hash_table = [[] for _ in range(HASH_SIZE)]
for key in data:
hash_val = hash_func(key)
hash_table[hash_val].append(key)
return hash_table
# 查询关键字K
def search_key(hash_table, key):
hash_val = hash_func(key)
compare_count = 0
for i in range(len(hash_table[hash_val])):
compare_count += 1
if hash_table[hash_val][i] == key:
return i+1, compare_count
return "fail", compare_count
# 主函数
if __name__ == '__main__':
n = int(input().strip())
data = list(map(int, input().strip().split()))
key = int(input().strip())
hash_table = build_hash_table(data)
result = search_key(hash_table, key)
if result == "fail":
print(result, n)
else:
print(result[0], result[1])
```
输入样例1:
```
12
19 14 23 01 68 20 84 27 55 11 10 79
55
```
输出样例1:
```
5 3
```
输入样例2:
```
12
19 14 23 01 68 20 84 27 55 11 10 79
15
```
输出样例2:
```
fail 12
```
阅读全文