关于二分法:
二分法使用要求
待查找的数据集必须有序
二分法的缺陷
针对开头结尾的数据 查找效率很低
常见算法的原理以及伪代码
二分法、冒泡、快拍、插入、堆排、桶排、数据结构(链表 约瑟夫问题 如何链表是否成环)
现在咱有个需求查找列表中某个数据值
l1 = [12, 21, 32, 43, 56, 76, 87, 98, 123, 321, 453, 565, 678, 754, 812, 987, 1001, 1232]
其实我们很多方法解决这个需求
- for循环的话训话次数太多影响效率
- 二分法不断对数据集进行二分切做割
但是接下来用以上提到的两种方法实现咱们得需求吧!!!!
for循环
l1 = [12, 21, 32, 43, 56, 76, 87, 98, 123, 321, 453, 565, 678, 754, 812, 987, 1001, 1232]
for i in l1:
if i == 987:
print('对了')
else:
print('不是')
二分法
l1 = [12, 21, 32, 43, 56, 76, 87, 98, 123, 321, 453, 565, 678, 754, 812, 987, 1001, 1232]
def get_target_num(l1, target_num):
if len(l1) == 0:
print('sry, can not find')
return
middle_index = len(l1) // 2
if target_num > l1[middle_index]:
right_l1 = l1[middle_index + 1:]
print(right_l1)
return get_target_num(right_l1, target_num)
elif target_num < l1[middle_index]:
left_l1 = l1[:middle_index]
print(left_l1)
return get_target_num(left_l1, target_num)
else:
print('good for you')
get_target_num(l1, 987)
标签:target,987,二分法,num,l1,print
From: https://www.cnblogs.com/almira998/p/17266386.html