二分查找Python3 实现

# -!- coding: utf-8 -!-
# !/usr/bin/env python 3.6.3
# author: Vivian
# time: 2018/9/22

# 是排序后的序列,且支持下标索引的顺序表
# 二分查找适用对象:有序顺序表
def binary_search(alist, data):

    # if len(alist):#查找的终止递归条件
    #     mid = (len(alist)) // 2
    #     if alist[mid] == data:
    #         return True
    #     elif data < alist[mid]:
    #         return binary_search(alist[:, mid], data)
    #     else:
    #         return binary_search(alist[mid + 1:], data)
    # else:
    #     return False
    #为何我编写的上标越界,由于使用了None,区别于node=None
    mid = (len(alist)) // 2
    #if len(alist) ==0:#终止的失败条件,正确
    #if alist == []:#正确
    #if alist is No=ne:这种是错误表达
    if len(alist) == 0:  # 终止的失败条件,正确
        return False
    elif data==alist[mid]:#成功条件
        return True
    elif data < alist[mid]:#递归条件
        return binary_search(alist[:, mid], data)
    else:
        return binary_search(alist[mid + 1:], data)


if __name__=='__main__':
    a=[0,1,2,3,4,5,6,7,8,9]
    result1=binary_search(a,8)
    print(result1)
    result2=binary_search(a,100)
    print(result2)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值