# 二分搜索是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,
# 则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,
# 而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。这种搜索算法每一次比较都使搜索范围缩小一半。
# 递归实现二分查找
def serach2(arr,low,high,n):
if high >= low:
mid = (low+high) // 2
if arr[mid] == n:
return mid
elif arr[mid] > n:
return serach2(arr,low,mid-1,n)
elif arr[mid] < n:
return serach2(arr,mid+1,high,n)
else:
return -1 #没找到
arr = [ 2, 3, 4, 10, 40 ]
n = 10
result = serach2(arr,0,len(arr)-1,n)
print(result)
# while循环实现二分查找
def search3(arr,n):
low = 0
high = len(arr)-1
mid = (low+high)//2
while low <= high:
if arr[mid] == n:
return mid
elif arr[mid] > n:
high = mid -1
elif arr[mid] < n:
low = mid +1
return -1 #没找到
arr = [ 2, 3, 4, 10, 40 ]
n = 10
result = serach2(arr,0,len(arr)-1,n)
print(result)
python实现二分查找
最新推荐文章于 2023-07-20 13:52:02 发布