#查找一个输入的数字是否在列表里
lst = [1,8,16,32,55,78,89,1,5,4,7,5,9,6,8,5,4,5,44,5,2,1,4,5,1]
#普通方法
lst=sorted(lst)
n=int(input("输入一个数:"))
left=0
right=len(lst)-1
while left <=right :
mid=(left+right)//2
if n>lst[mid]:
left =mid+1
elif n<lst[mid]:
right=mid-1
else:
print("你要找的数在这")
break
else:
print("你要找的数不在这里")
#递归方法一
lst=sorted(lst)
n=int(input("输入一个数:"))
def func(n,lst,left,right):
if left <=right:
mid=(left+right)//2
if n>lst [mid]:
left =mid+1
elif n<lst [mid]:
right=mid-1
else:
print("你要找的数在这" )
return True
return func(n,lst,left,right)
else:
print("你要找的数不在这里")
return False
ret=func(n,lst,0,len(lst)-1)
#递归方法二
lst=sorted(lst)
aim=int(input("请输入一个数:"))
def search(lst,aim,start=0,end=None):
'''
功能:二分法查找
:param lst: 被查找的列表
:param aim:被查找的数字
:param start:开始查找的位置
:param end:结束查找的位置
:return:如果被查找到,返回查找的位置,否则返回False
'''
if not end:end=len(lst)-1
if start <= end:
mid=start+(end-start)//2
mid_value=lst[mid]
if aim>mid_value:
start=mid+1
elif aim<mid_value:
end=mid-1
elif aim==mid_value:
return mid
ret = search(lst, aim, start, end)
return ret
else:
return False
ret=search(lst,aim)
print(ret)