📅  最后修改于: 2023-12-03 14:49:00.938000             🧑  作者: Mango
二元搜寻又称二分搜寻,是一种在有序数组中寻找某一特定元素的搜索算法。其基本思想是:首先确定该元素可能存放的区间,然后不断缩小该区间直到找到该元素,或者确定该元素不存在于数组中。
二元搜寻算法的时间复杂度是O(log n),相比于暴力搜索算法,其时间复杂度更低,更加高效。因此,在实际的开发工作中,二元搜寻算法是一种非常有用的算法。
left
和右边界right
,分别为数组起始位置和结束位置。mid
,即mid = (left + right) / 2
,取整数部分。target
:mid
。mid
位置元素值大于target
,则缩小搜索区间为左半部分,将right
更新为mid - 1
。mid
位置元素值小于target
,缩小搜索区间为右半部分,将left
更新为mid + 1
。def binary_search(nums, target):
left, right = 0, len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
二元搜寻算法是一种非常高效的搜索算法,可以在对数时间复杂度内找到一个有序数组中的特定元素。但需要注意,二元搜寻算法只适用于有序的数组。因此,在应用该算法时,需要预先将数组进行排序。