欢迎访问宙启技术站
智能推送

binarySearch()函数来搜索排序数组

发布时间:2023-07-04 07:24:03

binarySearch()函数是一种高效搜索算法,它可以在排序数组中快速定位目标元素的位置。

这个算法的原理是比较目标元素与数组中间位置的元素的大小,根据比较结果可以确定目标元素在前半部分还是后半部分数组中。然后重复这个比较过程,直到找到目标元素或者确认目标元素不在数组中为止。

下面是一个示例的binarySearch()函数的实现:

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移动到中间位置的上一个位置,继续搜索左半部分。

循环结束的条件是左边界大于右边界,表示搜索范围为空,意味着目标元素不在数组中,此时返回-1表示未找到目标元素。

这个函数的时间复杂度是O(logN),其中N是数组的长度,因为每次循环都将搜索范围缩小一半,所以搜索时间是对数级别的。

binarySearch()函数是一种非常常用和实用的搜索算法,可以在大规模数据集中快速定位目标元素,提高程序的效率。