复制
收藏
提问
简洁
写出使用不同方法进行指定key的查找;显示查找过程和所用时长的python代码
3月前
全网
文档
学术
百科
知识库
回答简洁模式
深入研究一些
在Python中,可以使用多种方法进行指定key的查找,并记录查找过程和所用时长。以下是几种常见的查找方法及其Python代码实现,包括顺序查找、二分查找和哈希查找,并展示了如何使用time
模块来记录查找操作的时长。
顺序查找
顺序查找是最简单直接的方法,适用于无序数组。以下是使用time
模块记录顺序查找时长的示例代码:
import time
def sequential_search(arr, key):
start_time = time.time() # 记录开始时间
for i in range(len(arr)):
if arr[i] == key:
end_time = time.time() # 记录结束时间
print(f"Found {key} at index {i}.")
print(f"Time taken: {end_time - start_time} seconds.")
return i
end_time = time.time()
print(f"{key} not found.")
print(f"Time taken: {end_time - start_time} seconds.")
return -1
# 示例数组和key
arr = [3, 5, 1, 4, 2]
key = 4
sequential_search(arr, key) # 调用函数
二分查找
二分查找适用于已排序的数组。以下是使用time
模块记录二分查找时长的示例代码:
def binary_search(arr, key):
arr.sort() # 确保数组是有序的
start_time = time.time()
low, high = 0, len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == key:
end_time = time.time()
print(f"Found {key} at index {mid}.")
print(f"Time taken: {end_time - start_time} seconds.")
return mid
elif arr[mid] < key:
low = mid + 1
else:
high = mid - 1
end_time = time.time()
print(f"{key} not found.")
print(f"Time taken: {end_time - start_time} seconds.")
return -1
# 示例数组和key
arr = [3, 5, 1, 4, 2]
key = 1
binary_search(arr, key) # 调用函数
哈希查找
哈希查找通过使用哈希表来实现快速查找。以下是使用time
模块记录哈希查找时长的示例代码:
def hash_search(arr, key):
start_time = time.time()
hash_table = {value: index for index, value in enumerate(arr)}
if key in hash_table:
end_time = time.time()
print(f"Found {key} at index {hash_table[key]}.")
print(f"Time taken: {end_time - start_time} seconds.")
return hash_table[key]
else:
end_time = time.time()
print(f"{key} not found.")
print(f"Time taken: {end_time - start_time} seconds.")
return -1
# 示例数组和key
arr = [3, 5, 1, 4, 2]
key = 5
hash_search(arr, key) # 调用函数
请注意,上述代码示例中的查找方法和时长记录都是基于数组的简单实现。在实际应用中,可能需要根据数据结构和具体需求进行调整。134567
你觉得结果怎么样?