【发布时间】:2013-09-09 17:17:18
【问题描述】:
我做了一个实验,试图找出搜索 python 列表所需的时间。我有一个带有随机整数的列表arr。 arr_s 仅对相同的元素进行了排序。
arr = np.random.randint(low = 0, high = 1000, size = 500)
arr_s = sorted(arr)
现在我创建一个随机整数数组find,其中包含我想要在arr 和arr_s 中搜索的元素。
>>> %%timeit
...:find = np.random.randint(0, 1000, 600)
...:for i in find:
...: if i in arr:
...: continue
[OUT]:100 loops, best of 3: 2.18 ms per loop
>>> %%timeit
...:find = np.random.randint(0, 1000, 600)
...:for i in find:
...: if i in arr_s:
...: continue
[OUT]:100 loops, best of 3: 5.15 ms per loop
现在我了解到我没有使用任何特定方法在排序数组中进行搜索(例如二进制搜索)。所以它可能正在执行标准的线性搜索,但为什么在排序数组中搜索比在未排序数组中搜索要花费更长的时间?我认为它应该花费几乎相同的时间。我尝试了各种find 数组。具有 (0, 1000)、(-1000, -100) 和 (-10000, 10000) 整数的数组,对于排序后的数组,循环总是需要更长的时间。
【问题讨论】:
-
你或许可以在stackoverflow.com/questions/12905513/…找到部分答案
标签: python list sorting search