算法之二分法
什么是算法?
解决问题的高效方法
二分法
(入门级别:还有一定距离)
l = [11, 23, 43, 57, 68, 76, 81, 99, 123, 321, 432, 567, 666, 712, 899, 999, 1111] # 第一种方式 直接for循环从左往右依次查找 # 第二种方式 二分法 """ 二分法能够使用的场景 数据集必须有序 """ def my_partner(target_num, l): # target_num=321 l=l if len(l) == 0: print('不好意思 我尽力 没找到') return # 先获取中间位置索引值 middle_index = len(l) // 2 # 8 # 判断中间索引对应的值比目标值大还是小 if target_num > l[middle_index]: # 说明要找的元素只可能出现在列表的右侧 l_right = l[middle_index + 1:] # l[9:] print(l_right) my_partner(target_num, l_right) elif target_num < l[middle_index]: # 说明要找的元素只可能出现在列表的左侧 l_left = l[:middle_index] print(l_left) my_partner(target_num, l_left) else: print('找到了', target_num) my_partner(444, l) 找不到 需要添加结束条件 my_partner(11, l) # 要查找的元素在开头 那么还没有依次查找的效率高