更新時(shí)間:2024-02-22 來源:黑馬程序員 瀏覽量:
在Python中,實(shí)現(xiàn)二分查找通常有兩種方法:
1.迭代法:
使用循環(huán)來實(shí)現(xiàn)二分查找算法。
2.遞歸法:
使用遞歸函數(shù)來實(shí)現(xiàn)二分查找算法。
下面是這兩種方法的簡單實(shí)現(xiàn)示例:
1.迭代法:
def binary_search_iterative(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1 # 如果目標(biāo)元素不在數(shù)組中,則返回 -1
2.遞歸法:
def binary_search_recursive(arr, target, left, right):
if left > right:
return -1
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
return binary_search_recursive(arr, target, mid + 1, right)
else:
return binary_search_recursive(arr, target, left, mid - 1)
# 調(diào)用入口
def binary_search(arr, target):
return binary_search_recursive(arr, target, 0, len(arr) - 1)
這兩種方法都可以有效地在已排序的數(shù)組中查找目標(biāo)元素的位置。迭代法使用循環(huán)來進(jìn)行查找,而遞歸法則利用遞歸函數(shù)來實(shí)現(xiàn)。