add python code
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
"""
|
||||
二分查找 — 在有序数组中查找目标值
|
||||
时间复杂度 O(log n)
|
||||
"""
|
||||
|
||||
def binary_search_recursive(arr, target, left, right):
|
||||
"""递归版二分查找"""
|
||||
if left > right:
|
||||
return -1
|
||||
|
||||
mid = left + (right - left) // 2
|
||||
|
||||
if arr[mid] == target:
|
||||
return mid
|
||||
elif arr[mid] > target:
|
||||
return binary_search_recursive(arr, target, left, mid - 1)
|
||||
else:
|
||||
return binary_search_recursive(arr, target, mid + 1, right)
|
||||
|
||||
def binary_search_iterative(arr, target):
|
||||
"""迭代版二分查找"""
|
||||
left, right = 0, len(arr) - 1
|
||||
|
||||
while left <= right:
|
||||
mid = left + (right - left) // 2
|
||||
if arr[mid] == target:
|
||||
return mid
|
||||
elif arr[mid] > target:
|
||||
right = mid - 1
|
||||
else:
|
||||
left = mid + 1
|
||||
|
||||
return -1
|
||||
|
||||
if __name__ == "__main__":
|
||||
arr = [1, 3, 5, 7, 9, 11, 13, 15]
|
||||
target = 7
|
||||
|
||||
idx1 = binary_search_recursive(arr, target, 0, len(arr) - 1)
|
||||
idx2 = binary_search_iterative(arr, target)
|
||||
|
||||
print(f"数组: {arr}")
|
||||
print(f"查找 {target}: 递归版结果索引={idx1}, 迭代版结果索引={idx2}")
|
||||
Reference in New Issue
Block a user