在比较搜索算法在列表中的执行时间时,我得出了一个结论,即
简单的解决方案在 3 秒内通过了大约 350 个测试:
索引解决方案在3秒内通过了所有2000个测试(实际上即使在2秒内也完成了):
list.index()
比简单的 for in
要快得多。根据 这篇文章,它们都应该是 O(n) 级别的。我在我的测试中得到了以下结果:简单的解决方案在 3 秒内通过了大约 350 个测试:
def linear_simple(arr):
for i in range(len(arr)):
if arr[i] == #my searched value#:
return i
索引解决方案在3秒内通过了所有2000个测试(实际上即使在2秒内也完成了):
def linear_index(arr):
return arr.index( #my searched value# )
所有的测试数组都是随机生成的。测试进行了多次,结果相似。
这意味着 index()
大约快了 9 倍。为什么? index()
不是像 for in
一样简单地在列表上迭代吗?
list.index
在 C 中被实现和优化。 - Chris_RandsO(n)
并不意味着它们在相同的输入集上执行所需的时间相同。 - bruno desthuilliers