Python 二分查找

递归方式:

array = [3,5,8,12,15,17,40,54,65,80]

def binary_search_v1(start,end,array,target):

    if start > end:
        return

    middle = int((start+end)/2)
    middle_element = array[middle]

    if target == middle_element:
        print('got it {},index is {}'.format(middle_element,middle))
        return middle
    
    elif target>middle_element:
        return binary_search_v1(middle+1,end,array,target)
    else:
        return binary_search_v1(start,middle-1,array,target)
   

for i in array:
    binary_search_v1(0,len(array),array,i)

非递归方式:

array = [3,5,8,12,15,17,40,54,65,80]

def binary_search_v2(start,end,array,target):

    while True:

        if start>end:
            break
        
        middle = int((start+end)/2)
        middle_element = array[middle]

        if target == middle_element:
            print('got it {},index is {}'.format(middle_element,middle))
            return middle
        
        elif target > middle_element:
            start = middle+1
        else:
            end = middle-1 

for i in array:
    binary_search_v2(0,len(array),array,i)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值