python 二分查找法

@source_data:数据集
@binary_num:要查找的数
@mid:中间数的键值
def binary_search(source_data,search_num):
    #传入数据集计算中间数键值
    mid = int(len(source_data)/2)
    #确认数据集的数据个数大于1
    if int(len(source_data)) >1:
        #判断要找的数与中间数比较,如果中间数大于要找的数,要找的数在中间数左边
        if source_data[mid] > search_num:
            # 显示数据的大概位置
            print("search_num in left [%s]" % source_data[mid])
            #重复判断查找
            binary_search(source_data[:mid], search_num)
        #如果中间数小于要找的数,要找的数在中间数右边
        elif source_data[mid] < search_num:
            #显示数据的大概位置
            print("search_num in right [%s]" % source_data[mid])
            # 重复判断查找
            binary_search(source_data[mid:], search_num)
        else:
            # 中间数正好等于要找的数,则打印出来
            print("find search_num",source_data[mid])
    else:
        #如果等于1输出提示信息
        print("can't find search_num")

if __name__== '__main__':
    data = [1,2,3,4,5,6,7]
    print(data)
    binary_search(data,4)
技术让生活更优质!
原文地址:https://www.cnblogs.com/chennuo/p/6402727.html