二分查找 (用来查找列表中元素是否存在)
# 思路:
# 1.在函数中传入有序列表和要查找的数字
# 2.把整个列表进行切割(min=len(alist)//2),利用索引找到中间的值(alist[min])
# 3.把中间的值和和要查找的元素进行对比,如果大于要查找的元素使用递归再次进行切割alist[:min]
# 4.反之[min+1:]
# 5.如果列表为空了则证明列表中没有此数字
def func(alist,itme):
if len(alist)==0:
return False
mid=len(alist)//2
if alist[mid]==itme:
return True
else:
if alist[mid]>itme:
return func(alist[:mid],itme)
else:
return func(alist[mid+1:],itme)
alist=[1,2,3,4,5,6,7,8,9,10,99,555,666,777,888,999]
print(func(alist,888))
def func(alist,item):
first=0
last=len(alist)-1
while first<=last:
mid=(first+last)//2
if alist[mid]==item:
return True
else:
if alist[mid]<item:
first=mid+1
else:
last=mid-1
else:
return False
alist=[1,2,3,4,5,6,7,8,9,10,99,555,666,777,888]
print(func(alist,999))