二分法实现in与index()

一、用二分法实现in

def search(find_num, list):      # 定义函数
    if not list:            # 判断传入列表是否为空
        print('False')
        return
    mid_index = len(list) // 2      # 取中间索引值
    if find_num == list[mid_index]:   # 按中间索引值查找对应元素
        print('True')
        return
    elif find_num > list[mid_index]:   # 如果要查找的数值比中间索引值对应的值大
        list = list[mid_index + 1:]     # 切分列表
        return search(find_num,list)    # 递归调用自身
    elif find_num < list[mid_index]:
        list = list[:mid_index]
        return search(find_num, list)

二、用二分法实现index()

def search(num, l, start=0, stop=len(l) - 1):
    if start <= stop:
        mid = start + (stop - start) // 2
        if num > l[mid]:
            start = mid + 1
        elif num < l[mid]:
            stop = mid - 1
        else:
            print(mid)
            return
        search(num, l, start, stop)
    else:  # 如果stop < start则意味着列表实际上已经全部切完,即切为空
        print('False')
        return

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Noah Ren

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值