首先,二分查找的思路就是:
1、将每一个list从中间位置开始对比,找到就抛出,找不到就对比大小,保留剩下的一半list,以此类推
2、要判断要查找的数据是否存在于已知list中
3、从一开始就判断要查找的数字是否 大于list中最大的数字,小于最小的数字
4、注意:二分查找的规则是,list必须是有序的
def fun(data_list, t): """ 二分查找 """ a = 0 max = len(data_list) - 1 index = int(len(data_list)/2) r = 0 if t < data_list[0] or t > data_list[-1]: print("数据不存在") else: while True: if len(data_list) == 1 and t != data_list[0]: print("数据不存在于列表中,请查看!") break if t > data_list[index]: a = index r = r + a data_list = data_list[a:] index = int(len(data_list)/2) elif t < data_list[index]: max = index data_list = data_list[:max] index = int(len(data_list) / 2) elif t == data_list[index]: r = r + index print("找到数据:", r) break if __name__ == "__main__": data_list = [1, 2, 4, 6, 9, 12, 23, 34, 38, 45, 47, 60] t = 8 fun(data_list, t)