给我一段程序,要求如下: ·构建分别包含一千条、一万和十万条数据的数据源:电话本(由姓名 和电话号构成) 分别查找其中任意名字或标识符的电话号码 分别记录三种数量级下,三种类型的运行时间
时间: 2024-09-09 11:14:35 浏览: 65
为了演示这个需求,我们可以创建一个简单的Python程序,使用列表作为数据源。我们将使用`timeit`模块来测量不同规模数据下的查询性能。这里是一个简化的例子:
```python
import random
import timeit
# 定义数据源大小
data_sizes = [1000, 10000, 100000]
name_lengths = ['姓', '名'] # 或者你可以使用标识符
def create_phone_book(size):
phone_book = []
for _ in range(size):
name = random.choice(name_lengths)
phone_number = str(random.randint(1000000, 9999999))
phone_book.append((name, phone_number))
return phone_book
def search_phone_book(phone_book, target_name):
start_time = timeit.default_timer()
result = [entry[1] for entry in phone_book if entry[0].lower() == target_name.lower()]
end_time = timeit.default_timer()
return {'time': end_time - start_time, 'result': result}
for size in data_sizes:
phone_book = create_phone_book(size)
# 测试查找速度,三次取平均值以减小随机因素影响
timings = []
for _ in range(3):
target_name = random.choice(phone_book[0][0])
timing = search_phone_book(phone_book, target_name)
timings.append(timing['time'])
print(f"Size: {size} entries")
print(f"Average search time for a name: {sum(timings) / len(timings)} seconds")
print("Search results:", timings)
print("\n---\n")
```
这个程序首先创建三个不同规模的电话簿,然后随机选择一个名字进行搜索,并记录每次的查询时间。由于`timeit`的结果受系统负载和随机因素影响,所以我们进行了多次搜索并计算平均值。
运行此程序后,你会看到每种数据规模下搜索名字的平均时间以及每次的具体运行时间。
阅读全文