binarySearch()函数进行二分查找
二分查找是一种在有序序列中查找特定值的算法。它将待查找区间不断缩小为两个子区间,直到找到目标值或区间已被缩小为无法再缩小。与顺序查找相比,它在时间复杂度上具有更优秀的表现,因为其每次比较都能将待查找序列的长度减半,因此时间复杂度为O(log n)。
二分查找的基本思想是:将待查找的区间不断缩小为两个子区间,直到找到目标值或区间已被缩小为无法再缩小。每次将区间的中点与目标值进行比较,并根据比较结果缩小待查找范围。具体步骤如下:
1.初始化left和right表示待查找区间的左右端点,mid表示中点。
2.如果left大于right,则结束查找,返回-1表示未找到目标值。
3.计算mid的值,mid=(left+right)/2。
4.如果目标值等于mid所在的位置的值,则返回mid表示找到目标值。
5.如果目标值小于mid所在的位置的值,则将right更新为mid-1,缩小右侧搜索区间。
6.如果目标值大于mid所在的位置的值,则将left更新为mid+1,缩小左侧搜索区间。
7.重复步骤2-6,直到找到目标值或者区间不能再缩小为止。
以下是二分查找的Python代码实现:
def binarySearch(arr, target):
left = 0
right = 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和目标值target。它首先初始化左右指针left和right,表示待查找区间的左右端点。然后进入while循环,在每次循环迭代中将中点计算为mid=(left+right)//2,并根据arr[mid]和target的关系更新左右指针。如果找到目标值则返回mid,如果未找到则返回-1。
在使用二分查找算法时,需要保证待查找序列是有序的。如果序列无序,则需要先将其排序再进行查找,否则查找结果可能不正确。
二分查找是一种非常高效的查找算法,其时间复杂度为O(log n),可以找到大量之前需要使用顺序查找才能找到的元素,因此在实际程序开发中经常会使用二分查找算法来提高查找效率。
