二分查找

本文介绍了一种高效的查找算法——二分查找。通过不断将查找区间减半的方式,可以在O(lgn)的时间复杂度内完成对有序数组中指定元素的查找。文章提供了具体的Python实现代码示例。

优点:

从包含n个元素的数组中执行查找操作仅仅需要O(lg n)时间

内容:

在任意情况下,我们仅仅考虑某个子数组,也就是说,介于两个索引之间的部分数组,将两个索引依次记为p=1,r=n,因此开始时, 子数组为整个完整数组。我们反复将子数组规模减半,直到发现以下任何一种情况发生:要么找到了要查找的元素,要么当前 的子数组为空(也就是说p>r)。反复对子数组执行减半操作需要花费O(lgn)的运行时间。

test = list(range(1,11))
test
>>>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

def binary(test,target):
    p = 0
    r = len(test)-1
    while p<=r:
        q = (p+r)//2
        if test[q] == target:
            return q
        else:
            if test[q]>target:
                r = q-1
            else:
                p = q+1
    return "Not found"

  

转载于:https://www.cnblogs.com/zenan/p/8721384.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值