算法
算法简介
计算机算法是计算机有效求解问题的方法,是一步一步解决问题的过程。
二分法
二分法是算法里最基础的一个,这里只是用作我们接触算法的敲门砖。
二分法的使用前提与原理
- 使用前提
二分法的使用前提是要求解决问题的数据集必须有顺序(严格升序或降序),否则二分法解决该类问题的结果一般都是错误的。 - 原理
将目标数据与中位数进行对比,目标数据大的时候取数据集中位数的右半部分作为新数据集,目标数据小的时候取数据集中位数的左半部分作为新数据集,然后对新数据集继续二分比对中位数与目标值,重复上述步骤。
二分法的代码实现
list_num = [11, 22, 33, 44, 55, 66, 77, 88, 99, 111, 222, 333, 444, 555, 666]
def get_num(list_num, aim_num):
if len(list_num) == 0:
print('侬不给偶,让偶找撒贼')
return
mid_num = len(list_num)//2
if aim_num > list_num[mid_num]:
list_num_left = list_num[mid_num+1:] # 目标值大于中间值,保留中间值右侧
print(list_num_left)
get_num(list_num_left, aim_num) # 递归
elif aim_num < list_num[mid_num]:
list_num_right = list_num[:mid_num] # 目标小于中间值,保留中间值左侧
print(list_num_right)
get_num(list_num_right, aim_num) # 递归
else:
print('find it', aim_num)
get_num(list_num, 555)
get_num(list_num, 66)
get_num(list_num, 111)
算法之二分法结束
