算法-二分法

算法:解决问题的高效率的方法

1. 找元素是否在一个列表中

普通方法 for i in l :

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

for i in l:
    if num == i:
        print("找到了:%s" % i)

2.二分法:

1.容器中的数字必须有大小顺序
2.依次和中间的数进行比较大小,小于取左,大于取右
排序: sort()升序,sort(reverse=Ture)降序,reverse()反转,逆序排列

l = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
l.sort() # 重新升序排序

def get_num(l, num):
    # 取列表中间数索引位置
    num_middle = len(l) // 2
    # 这个数不在列表中,切到后面就是空列表,空列表就直接返回
    if not l:
        return print("列表中找不到", num)
    print(l) # 打印每次切片后的列表
    # 判断大小
    if num > l[num_middle]:
        # 切片右半部
        right_num = l[num_middle + 1:]
        get_num(right_num, num)
    elif num < l[num_middle]:
        # 切去左半部
        left_num = l[:num_middle]
        get_num(left_num, num)
    else:
        print("列表中找到了", num)


get_num(l, 9)

 



上一篇:Bootstrap Table的 文本内容 垂直居中


下一篇:LeetCode.876-链表的中间节点(Middle of the Linked List)