【发布时间】:2021-07-29 18:47:37
【问题描述】:
我正在努力争取时间 二进制搜索的不同大小。我只用这个程序得到 2097152。我是 python 新手。我知道缩进在 python 中是至关重要的。有缩进的东西吗?谢谢
import time
def bsearch(a,first,last,key):
if first>last:
#print "not found"
return
mid=(first+last)//2
if key==a[mid]:
#print "found"
return
elif key>a[mid]:
bsearch(a,mid+1,last,key)
else:
bsearch(a,first,mid-1,key)
a=[1]*2097152
sizes=[128,512,2048,8192,32768,131072,524288,2097152]
for i in range(0,8):
for j in range(0,sizes[i]):
a[j]=j
start=time.time()
for k in range(0,20000):
bsearch(a,0,j-1,j)
stop=time.time()
print ("time for size "+str(j)+" is: "+str((stop-start)*1000))
【问题讨论】:
-
2097152能得到什么?您的二进制搜索是否有效?您可以尝试使用timeit.timeit,而不是手动尝试计算时差。 -
由于您的 for 循环
j的顺序和嵌套在您的测试中始终为 2097152,您希望发生什么? -
I am expecting something like this - 0.173451093 seconds for 128 1.245498027 seconds for 512 1.152212907 seconds for 2048 1.195236266 seconds for 8192 1.248549547 seconds for 32768 1.286318933 seconds for 131072 1.363635626 seconds for 524288 1.506570667 seconds for 2097152
-
我得到“尺寸 2097152 的时间是:368.13902854 @Patrick Haugh
标签: python binary-search