【发布时间】:2020-10-24 12:45:00
【问题描述】:
我尝试运行此代码以查看顺序搜索是否确实为 O(n),但如您所见,0 是列表 my_list 中的第一项,但它是最大的时间增量,而且时间增量没有似乎没有减少。
我预计时间增量会增加。我在这里错过了什么?
ps。我在不同的机器上试过了,一样。
import time
get_time = lambda : time.perf_counter()
my_list = list((0,1,2,3,4,5,6,7,8,9))
# my_list_a = list('abcdefghijklmnopqrstuvwxyz')
def find_item(input_array, item):
_time_delta = 0
_time_mult = 10e7
t0 = get_time()
_found = False
for entry in input_array:
if entry == item:
_found = True
break
t1 = get_time()
_time_delta = (t1-t0)*_time_mult
return _found, _time_delta
for idx in range(len(my_list_a)):
print(idx, find_item(my_list, idx))
# for letter in my_list_a:
# print(letter, find_item(my_list, letter))
0 (True, 50.00000000005001)
1 (True, 30.000000000168782)
2 (True, 30.000000000168782)
3 (True, 30.000000000168782)
4 (True, 30.000000000168782)
5 (True, 40.000000000109395)
6 (True, 29.999999999821835)
7 (True, 30.000000000168782)
8 (True, 29.999999999821835)
9 (True, 29.999999999821835)
【问题讨论】:
标签: list performance time