通过递归实现二分法(python)

本文介绍了一种使用递归实现的二分查找算法,详细解释了如何通过不断缩小搜索范围来定位目标元素,适用于已排序的列表。文章提供了一个Python代码示例,展示了递归二分查找的基本流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#递归实现二分法
def mid_search(li, item):
    global max
    global min
    global list1
    #如果item在列表中
    if item in list1:
        mid = int((max+min)/2)

        #如果中间的数等于item,则递归结束,打印该item所在列表的位置
        if list1[mid] == item:
             return mid

        #如果中间的数大于item,则说明item在列表左边
        if list1[mid] > item:
            #列表最大值位置更改为中间值减1,最小值位置不变
             max = mid - 1
             return mid_search(li[min:max], item)
        #如果中间的数小于item,则说明item在列表右边
        elif list1[mid] < item:
            #列表最小值位置更改为中间值位置加1,最大值位置不变
             min = mid + 1
             return mid_search(li[min:max], item)
    如果找不到item则返回None
    else:
        return None


if __name__ == '__main__':
    li = [0,1,2,2.5,4,5,6,7]
    list1 = li
    min = 0
    max = (len(li) - 1)
    print(mid_search(li,4.2))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值