【发布时间】:2019-04-09 13:23:55
【问题描述】:
我在下面制作了两个 Python 函数,一个用于顺序(线性)搜索,另一个用于二进制搜索。
我想为给定列表中的每个尺寸值做这 3 件事:
为给定的列表大小生成随机整数值列表(介于 1 到 1000,0000 之间)
对列表中的 -1 运行顺序搜索并记录顺序搜索经过的时间
在排序后的列表上对-1进行二分查找(对列表进行排序后),并记录二分查找经过的时间
我所做的是:
def sequentialSearch(alist, item):
pos = 0
found = False
while pos < len(alist) and not found:
if alist[pos] == item:
found = True
else:
pos = pos + 1
return found
def binSearch(list, target):
list.sort()
return binSearchHelper(list, target, 0, len(list) - 1)
def binSearchHelper(list, target, left, right):
if left > right:
return False
middle = (left + right)//2
if list[middle] == target:
return True
elif list[middle] > target:
return binSearchHelper(list, target, left, middle - 1)
else:
return binSearchHelper(list, target, middle + 1, right)
import random
import time
list_sizes = [10,100,1000,10000,100000,1000000]
for size in list_sizes:
list = []
for x in range(size):
list.append(random.randint(1,10000000))
sequential_search_start_time = time.time()
sequentialSearch(list,-1)
sequential_search_end_time = time.time()
print("Time taken by linear search is = ",(sequential_search_end_time-sequential_search_start_time))
binary_search_start_time = time.time()
binSearch(list,-1)
binary_search_end_time = time.time()
print("Time taken by binary search is = ",(binary_search_end_time-binary_search_start_time))
print("\n")
我得到的输出是:
众所周知,二分查找比线性查找要快得多。 所以,我只想知道为什么它显示二进制搜索消耗的时间比线性搜索消耗的时间多?
【问题讨论】:
标签: python random time binary-search linear-search