二分查找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)

猜你喜欢

转载自blog.csdn.net/liangjiubujiu/article/details/82811308