更新時(shí)間:2024-02-22 來(lái)源:黑馬程序員 瀏覽量:
在Python中,實(shí)現(xiàn)二分查找通常有兩種方法:
1.迭代法:
使用循環(huán)來(lái)實(shí)現(xiàn)二分查找算法。
2.遞歸法:
使用遞歸函數(shù)來(lái)實(shí)現(xiàn)二分查找算法。
下面是這兩種方法的簡(jiǎ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)來(lái)進(jìn)行查找,而遞歸法則利用遞歸函數(shù)來(lái)實(shí)現(xiàn)。