📅  最后修改于: 2023-12-03 15:39:47.625000             🧑  作者: Mango
指数搜索(Exponential Search)是一种用于在有序数组中查找特定元素的算法。它是通过先确定一个范围,然后逐步增加范围的大小来逼近要查找的元素的位置。这种算法的时间复杂度为O(log n),比传统的二分搜索还要更有效率。
def exponential_search(arr, target):
if arr[0] == target:
return 0
n = len(arr)
i = 1
while i < n and arr[i] <= target:
i = i*2
return binary_search(arr, target, i//2, min(i, n-1))
def binary_search(arr, target, left, right):
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, 11]
target = 7
print(exponential_search(arr, target)) # Output: 3
以上是指数搜索的介绍及代码实现。由于其对二分查找的优化,所以对于大型有序数组来说,在时间复杂度方面要更加高效。