1. 二分查找法 -> 必须处理有序的列表 -> 每次取一半去进行查找,并且是从上一次再取一半进行查找


# 通过二分查找法找到对数值的下标 -> 通过下标去判断

def find(l, aim, start=0, end=None):
    end = len(l) if end is None else end
    mid_index = (end - start) // 2 + start  # 获取中间数
    if start <= end:
        if l[mid_index] < aim:
            return find(l, aim, start=mid_index + 1, end=end)  # 如果中间数 小于 目标数,那么就以该中间数为起始值判断右边的数值
        elif l[mid_index] > aim:
            return find(l, aim, start=start, end=mid_index - 1)  # 如果中间数 大于 目标数,那么就以该中间数为结束值判断左边的数值
        else:
            return mid_index
    else:
        return '找不到这个值'


ret = find(l, 44)