python实现--折半查找

python实现–顺序查找
python实现–折半查找
python实现–分块查找
python实现B/B+树

折半查找(Binary Search),也称为二分查找,是一种高效的查找算法,适用于有序数组或列表。它的基本思想是通过每次将查找范围缩小为原来的一半来逼近目标元素,直到找到目标元素或者确定目标元素不存在。

实现思路:
确定查找范围:初始化左边界 left 和右边界 right,初始时左边界为0,右边界为数组长度减1。
计算中间位置:通过 (left + right) // 2 计算中间位置 mid。
比较目标值:将目标值与中间位置的元素进行比较。
如果目标值等于中间位置的元素,则返回中间位置作为查找结果。
如果目标值小于中间位置的元素,则更新右边界 right = mid - 1,缩小查找范围为左半部分。
如果目标值大于中间位置的元素,则更新左边界 left = mid + 1,缩小查找范围为右半部分。
重复步骤2和步骤3,直到找到目标元素或者确定目标元素不存在为止。

def binary_search(arr, target):
    left, right = 0, 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  # 未找到目标元素,返回-1

# 测试
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 7
index = binary_search(arr, target)
if index != -1:
    print(f"目标元素 {target} 在数组中的索引为:{index}")
else:
    print(f"未找到目标元素 {target}")

以上代码实现了折半查找算法。通过不断缩小查找范围,折半查找算法可以在时间复杂度为 O(log n) 的情况下找到目标元素,其中 n 为数组的长度。这使得折半查找成为一种非常高效的查找算法,特别适用于大型有序数据集合的查找操作。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值