python 二分查找_python 二分查找的三种方式

二分查找是一种高效的查找算法,适用于有序序列。本文将介绍三种Python实现二分查找的方法:纯算法、递归法和另类方法。通过这些方法,你可以快速掌握如何在Python中应用二分查找。
摘要由CSDN通过智能技术生成

28aae95161dd153c269dffaae07edc1a.gif

⼆分查找. 每次能够排除掉一半的数据.  查找的效率非常高. 但是局限性比较大. 必须是有序列才可以使用二分查找

要求: 查找的序列必须是有序序列.

三种方法:

1.纯算法

lst = [11, 22, 33, 44, 55, 66, 77, 88, 99, 123, 234, 345, 456, 567, 678, 789]
n = 567
left = 0
right = len(lst)-1
count = 1
while left <= right :
    middle = (left +right)  // 2
    if n > lst[middle] :
        left = middle + 1
    elif n         right = middle -1
    else :
        print(count)
        print("存在")
        print(middle)
        break
    count += 1
else :
    print("不存在")

2.递归法

#Python学习交流QQ群:778463939
# lst = [11, 22, 33, 44, 55, 66, 77, 88, 99, 123, 234, 345, 456, 567, 678, 789]
def  binary_search(n,left,right):
    if left <= right :
        middle = (left+right) // 2
        if  n              right = middle -1
        elif n >lst[middle]:
            left = middle  + 1
        else :
            return middle
        return binary_search(n,left,right)  # 不加return返回永远是None
    else :
        return -1  #没有找到


print(binary_search(567,0,len(lst)-1)

3.另类方法

def biinary_search(ls,target):
    left = 0
    right = len(ls) - 1
     if left > right:
        print("不不在这⾥里里")
    middle = (left + right) // 2
    if target         return binary_search(ls[:middle], target)
    elif target > ls[middle]:
        return binary_search(ls[middle+1:], target)
    else:
        print("在这⾥里里")
binary_search(lst, 567)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值