二分查找又称折半查找,将表中间的元素与需要查找的元素进行比较,如果相同,则查找成功。否则,根据中间的元素将表分成前后两个子表,当查找元素大于中间的元素时,查找后表,重复以上步骤。小于中间的元素时,同理。
优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。
def binary_search(li,item):
start =0
end =len(li)-1
while start<=end:
mid = (start+end)//2
if li[mid] == item:
return True
elif li[mid] > item:
end = mid -1
else:
start = mid +1
return False
#递归
def recursion(li,item):
if len(li)==0:
return False
else:
mid =len(li)//2
if li[mid] == item:
return True
else:
if item < li[mid]:
return recursion(li[:mid],item)
else:
return recursion(li[mid+1:],item)
li = [17,20,26,31,44,54,55,77,93]
print(binary_search(li,558))
print(recursion(li,179))