1.随机产生n(n>500)个整数,完成以下操作: (1)对给定的查找集合,顺序查找与给定值k相等的元素,并返回查找所用时间; (2)对给定的有序查找集合,折半查找与给定值k相等的元素,并返回查找所用时间;
时间: 2024-01-22 12:19:25 浏览: 64
以下是 Python 代码实现:
```python
import random
import time
# 生成n个随机整数
n = 1000
nums = [random.randint(1, 10000) for _ in range(n)]
nums.sort() # 排序
# 顺序查找
def seq_search(nums, k):
start_time = time.time() # 记录开始时间
for i in range(len(nums)):
if nums[i] == k:
end_time = time.time() # 记录结束时间
return end_time - start_time # 返回查找所用时间
end_time = time.time() # 记录结束时间
return end_time - start_time # 返回查找所用时间
# 折半查找
def binary_search(nums, k):
start_time = time.time() # 记录开始时间
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == k:
end_time = time.time() # 记录结束时间
return end_time - start_time # 返回查找所用时间
elif nums[mid] < k:
left = mid + 1
else:
right = mid - 1
end_time = time.time() # 记录结束时间
return end_time - start_time # 返回查找所用时间
# 测试
k = 5000 # 要查找的值
print("顺序查找时间:", seq_search(nums, k))
print("折半查找时间:", binary_search(nums, k))
```
注意,这里使用 Python 的时间模块来记录查找所用时间。
阅读全文