📅  最后修改于: 2023-12-03 15:28:20.426000             🧑  作者: Mango
在计算机科学中,二分查找(英文:binary search),也称折半查找(英文:half-interval search)、对数查找(英文:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。时间复杂度为O(log n)。
迭代二分查找是一种使用迭代法实现的二分查找算法。相比于递归实现的二分查找,迭代实现的主要优势在于能够有效地避免递归带来的函数调用栈开销,具有更好的性能表现。
迭代二分查找的实现思路如下:
left
和 right
,分别指向数组的开头和结尾;left <= right
,则循环继续,否则返回 -1 表示没有找到目标元素;mid
,通过 mid
将原数组分为左右两个子数组;arr[mid] == target
,则返回 mid
;arr[mid] < target
,则更新 left
为 mid + 1
,继续下一轮循环;arr[mid] > target
,则更新 right
为 mid - 1
,继续下一轮循环;def binary_search(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
arr = [1, 3, 5, 7, 9]
target = 5
result = binary_search(arr, target)
if result != -1:
print(f"元素 {target} 在数组中的下标为 {result}")
else:
print(f"元素 {target} 不在数组中")
输出结果:
元素 5 在数组中的下标为 2