【问题标题】:Varying time deltas when searching for items in a list搜索列表中的项目时变化的时间增量
【发布时间】: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


    【解决方案1】:

    好的,找到答案了。 感谢您为 Stack Overflow 提供答案!

    请务必回答问题。提供详细信息并分享您的研究! 但要避免……

    寻求帮助、澄清或回应其他答案。 根据意见发表声明;用参考资料或个人经验来支持他们。 要了解更多信息,请参阅我们关于编写出色答案的提示。

    【讨论】:

      猜你喜欢
      • 2017-01-09
      • 2020-06-01
      • 2011-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-07
      • 1970-01-01
      相关资源
      最近更新 更多