码迷,mamicode.com
首页 > 其他好文 > 详细

二分法

时间:2020-05-29 09:34:10      阅读:67      评论:0      收藏:0      [点我收藏+]

标签:切片   div   index   解决问题   数字   value   bsp   一个   需要   

算法

是高效解决问题的办法

用于某种特定的场景

算法之 二分法

需求:有一个按照从小到大顺序排列的数字列表,需要从该数字列表中找到我们想要的那个数字,如何做更高效???

方案1:整体遍历,效率太低

nums = [-3,4,7,10,13,21,43,77,89]

find_num = 10

for num in nums:
    if num == find_num:
        print(find it)
        break

方案2:二分法

# 思路
# def binary_search(find_num,列表):
#     mid_value = 找列表中间的值
#     if find_num > mid_value:
#         # 接下来的查找应该是列表的右半部分
#         # 列表 = 列表切片 切出右半部分
#         # 本身的代码(列表)
#         binary_search(find_num,列表)
#     elif find_num < mid_value:
#         # 接下来的查找应该是列表的左半部分
#         # 列表 = 列表切片 切出左半部分
#         # 本身的代码(列表)
#         binary_search(find_num,列表)
#     else:
#         print(‘find it‘)
nums = [-3, 4, 7, 10, 13, 21, 43, 77, 89]

find_num = 10

def binary_search(find_num, l):
    print(l)
    if len(l) == 0:
        print(找的值不存在)
        return
    mid_index = len(l) // 2

    if find_num > l[mid_index]:
        # 接下来的查找应该是列表的右半部分
        # 列表 = 列表切片 切出右半部分
        l = l[mid_index + 1:]
        # 本身的代码(列表)
        binary_search(find_num, l)
    elif find_num < l[mid_index]:
        # 接下来的查找应该是列表的左半部分
        # 列表 = 列表切片 切出左半部分
        l = l[:mid_index]
        # 本身的代码(列表)
        binary_search(find_num, l)
    else:
        print(find it)


binary_search(find_num, nums)

 

二分法

标签:切片   div   index   解决问题   数字   value   bsp   一个   需要   

原文地址:https://www.cnblogs.com/zhww/p/12983973.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!