python 经典算法之--二分查找算法(Binary Search Algorithm)

二分查找(Binary Search),也称折半查找,是一种效率较高的查找方法,该算法需要先将数组排序,然后通过不断的将查找区间折半来定位查找元素。

具体实现过程如下:

  1. 首先确定整个查找区间的中间位置mid = (left + right) / 2;
  2. 然后将待查找的值num与中间位置的值arr[mid]进行比较,如果相等,则查找成功返回mid;
  3. 如果num比arr[mid]小,则在左半部分继续查找,即将查找区间缩小为[left, mid - 1];
  4. 如果num比arr[mid]大,则在右半部分继续查找,即将查找区间缩小为[mid + 1, right];
  5. 反复执行步骤2、3、4,直到查找成功或者查找区间为空。

下面是用Python实现二分查找算法的示例代码:

def binary_search(arr, num):
    left = 0
    right = len(arr) - 1
    while left <= right:
        mid = (left + right) // 2
        if arr[mid] == num:
            return mid
        elif arr[mid] > num:
            right = mid - 1
        else:
            left = mid + 1
    # 如果查找失败,则返回-1
    return -1

接下来我们举一个例子,假设有一个有序数组arr = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19],需要查找其中的元素11,我们可以调用上面的二分查找函数进行查找:

arr = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
num = 11
result = binary_search(arr, num)
if result != -1:
    print(f"查找成功,元素{num}在数组中的位置为{result}")
else:
    print("查找失败,元素不在数组中")

程序的运行结果为:

查找成功,元素11在数组中的位置为5

从运行结果可以看出,二分查找算法成功地找到了元素11在数组中的位置,且运行效率比顺序查找要高很多。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值