二分查找算法,也称为折半查找,是一种在有序数组中查找特定元素的算法。它通过将数组分成两个部分来减少搜索的范围,然后递归地在其中一个部分中查找目标值。

以下是一个简单的二分查找算法实现:

def binary_search(arr, val):
    low = 0
    high = len(arr) - 1

    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == val:
            return mid
        elif arr[mid] < val:
            low = mid + 1
        else:
            high = mid - 1

    return -1

这个函数接受一个有序数组和一个要查找的值作为参数。它通过将数组的左边界和右边界保存在 'low' 和 'high' 变量中来初始化搜索范围。然后,它在一个循环中进行搜索,直到找到目标值或者搜索范围缩小到空集。

在每次循环中,算法计算中间元素的索引 'mid',并将其与目标值进行比较。如果它们相等,那么函数返回 'mid',表示找到了目标值。如果 'arr[mid]' 小于目标值,那么目标值只可能在 'arr[mid+1:high+1]' 中,因此将搜索范围缩小到右半部分。否则,目标值只可能在 'arr[low:mid]' 中,因此将搜索范围缩小到左半部分。

如果函数在循环结束时仍然没有找到目标值,那么它返回 '-1' 表示未找到。

例如,如果我们使用以下代码来调用这个函数:

arr = [1, 3, 5, 7, 9]
val = 5

print(binary_search(arr, val))

那么输出将是 '2',表示目标值 '5' 在数组中的索引为 '2'。


原文地址: https://www.cveoy.top/t/topic/n9t4 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录