二分法

关于二分法:

二分法使用要求
待查找的数据集必须有序

二分法的缺陷
针对开头结尾的数据 查找效率很低

常见算法的原理以及伪代码
二分法、冒泡、快拍、插入、堆排、桶排、数据结构(链表 约瑟夫问题 如何链表是否成环)

现在咱有个需求查找列表中某个数据值

l1 = [12, 21, 32, 43, 56, 76, 87, 98, 123, 321, 453, 565, 678, 754, 812, 987, 1001, 1232]

其实我们很多方法解决这个需求

  1. for循环的话训话次数太多影响效率
  2. 二分法不断对数据集进行二分切做割

但是接下来用以上提到的两种方法实现咱们得需求吧!!!!

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)

posted @ 2023-03-28 19:12  阿丽米热  阅读(18)  评论(0编辑  收藏  举报
Title