使用python实现二分法
def f1(src_list,find_n):
if find_n > src_list[-1]:#判断find_n是否大于最大值,如果大于则直接返回
s= “%s is not finded” % (find_n)
print(s)
return False
if find_n < src_list[0]:#判断find_n是否小于最小值,如果小于则直接返回
s= “%s is not finded” % (find_n)
print(s)
return False
else:#只有find_n在最大值和最小值之间,才进入函数
mid= int(len(src_list)/2)
if len(src_list) >1:
if src_list[mid] > find_n:
print(“%s in left” %(find_n))
mid_list= src_list[0:mid]
f1(mid_list,find_n)
elif src_list[mid] < find_n:
print(“%s in right” %(find_n))
mid_list= src_list[mid:]
f1(mid_list,find_n)
else:
print(“%s is finded” %(find_n))
return True
if len(src_list)== 1:
if src_list[0]== find_n:
s= “%s is finded” % (find_n)
print(s)
return True
else:
s= “%s is not finded” % (find_n)
print(s)
return False
data= list(range(0,10,3))
f1(data,-1)
©著作权归作者所有:来自51CTO博客作者linux小大白的原创作品,如需转载,请注明出处,否则将追究法律责任
linux小大白
10篇文章,2W+人气,0粉丝