递归实现二分查找(Python2.7)

<pre name="code" class="python"># _*_ coding: utf-8 _*_
#二分查找
def BinarySearch(lists, left, right, key, tag, mid = 0, found = False):
    count = len(lists[left:right+1]) + 1
    if tag == 0:
        mid = count // 2
    elif tag == 1:
        mid += count // 2
    else:
        mid -= count // 2

    if lists[mid] == key:
        found = True
    else:
        while left < right:
            if lists[mid] > key:
                right = mid
                tag = 2
                return BinarySearch(lists, left, right, key, tag, mid, found)
            elif lists[mid] < key:
                left = mid + 1
                tag = 1
                return BinarySearch(lists, left, right, key, tag, mid, found)
    if found:
        print key, 'found, index is ', mid
    elif left >= right and not found:
        print key, 'is not found in lists'

L = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for i in range(0, 11):
    BinarySearch(L, key = i, left = 0, right=len(L)-1, tag = 0)


 
 
 
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值