以下是使用二分法查找一个数在指定区间范围的 Python 程序示例:

def binary_search(arr, low, high, x):
    '''
    :param arr: 有序数组
    :param low: 数组起始下标
    :param high: 数组结束下标
    :param x: 要查找的数
    :return: 数在数组中的下标,如果不存在则返回 -1
    '''
    if high >= low:
        mid = (high + low) // 2

        # 如果元素小于中间元素,则在左半部分查找
        if arr[mid] > x:
            return binary_search(arr, low, mid - 1, x)

        # 如果元素大于中间元素,则在右半部分查找
        elif arr[mid] < x:
            return binary_search(arr, mid + 1, high, x)

        # 如果元素等于中间元素,则返回下标
        else:
            return mid

    else:
        # 元素不存在
        return -1


# 示例
arr = [2, 3, 4, 10, 40]
x = 10
result = binary_search(arr, 0, len(arr)-1, x)
if result != -1:
    print('元素在数组中的下标为:%d' % result)
else:
    print('元素不存在')

在上面的示例中,binary_search 函数使用了递归的方式来实现二分查找算法。它接收一个有序数组、数组的起始下标、结束下标和要查找的数作为参数,返回数在数组中的下标,如果不存在则返回 -1。在函数内部,它首先计算出中间元素的下标,然后检查中间元素是否等于要查找的数,如果是,则返回中间元素的下标;否则,它会递归地在数组的左半部分或右半部分查找,直到找到元素或确定元素不存在。最后,我们使用示例数组 [2, 3, 4, 10, 40] 和要查找的数 10 来测试函数。函数返回的结果为 3,即数 10 在数组中的下标为 3


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

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