二分查找的前提是查找的数据按照顺序排序
二分查找的核心思想是递归
# arr:查找的对象
# left:arr的左边界
# right:arr的右边界
# x:需要查找的数
def binary_search(arr,left,right,x):
# 左边界小于等于右边界
if left<=right:
# 得到中位数
mid=int((left+right)//2)
# x小于中位数,说明x在左半边,右边界为mid-1(从下标0开始找)
if x<arr[mid]:
# 递归继续找
return binary_search(arr,left,mid-1,x)
# x大于中位数,说明x在右半边,左边界为mid+1
elif x>arr[mid]:
# 递归继续找
return binary_search(arr,mid+1,right,x)
# 直到最后找到返回下标
elif x==arr[mid]:
return mid
else:
return '数据不存在'
arr = [1,2,3,4,5,6]
x = 3
# 用result来接收下标的值:2
result = binary_search(arr,0,len(arr-1),3)
标签:二分,arr,right,return,python,mid,查找 From: https://www.cnblogs.com/zy7941246/p/17296652.html