""" 二分查找 — 在有序数组中查找目标值 时间复杂度 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}")