二分法算法讲解,配二分python 代码实现及其运行结果。

半片云烟,半片山河。
半分江湖,半分天地。

系列文章目录

提示:算法之二分法的写法,本篇文章主要以二分法写作为主,使用的主语言是python。



一、二分法算法原理是什么?

1.二分法算法介绍

       二分查找是一种算法,其输入一个有序的元素列表。如果要查找的元素包含再列表中,二分查找返回其位置;否则返回NULL。
       给一组数列列表,给定一个想要查找的值,每一次查找取中间值做比较,如何测试值比中间值的值高则取上半区,如何测试值比中间值的值低则取下半区。每次一般的取值方式,快速的查找到值的所在位置。
       二分法算法的时间复杂度是log2(n),因为每次都是折中所以时间复杂度是一半。!

2.二分法图解简介

在这里插入图片描述:
请添加图片描述

二、 二分法代码的基本实现方法

1.二分法算法实现方法(1)

代码如下(示例):

my_list = [45,55,65,35,85]
#定义函数
def binary_search(list,item):
    #len()函数会得到数列的所含的数字具体数值。
    # 二我们计算出来数字位置下表从0开始所以-1
    high = len(list)-1
    low = 0
    while high >= low:
        #算取中间的值,奇数向下取整
        mid =int(low+(high-low)/2)
        #猜的值是中间值。
        guess = list[mid]
        if guess == item:
            return mid
        elif guess < item:#如果猜的值小于给定的值
            low =  mid+1
        elif guess > item:#如果猜的值大于给定的值
            high = mid-1
    return None

print(binary_search(my_list,65))
print(binary_search(my_list,22))

运行结果:
在这里插入图片描述


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python中的二分算法可以通过使用标准库中的`bisect_left()`函数来实现。该函数接受两个参数,一个是有序序列,另一个是目标值。它会返回目标值在序列中的插入位置,如果目标值已经存在,则返回其左侧位置。例如,如果我们有一个有序序列`a = \[1,2,2,3,5,5,5,6,7\]`,我们想要找到值为4的元素的插入位置,我们可以使用`bisect_left(a, 4)`函数来实现,它会返回2。\[2\] 另外,二分算法在解决一般最值问题时非常有用。在使用二分法解决问题时,我们需要将问题的信息建模为可以使用二分法解决的形式。通常,我们需要编写一个`check()`函数来根据题目要求进行判断。二分法本身也有一些问题,比如取整问题,但是如果使用简易的二分模板,通常不需要考虑这个问题。\[1\] 总的来说,二分法是一种高效的算法,可以在较短的时间内找到问题的解。在解决一些数量较大的问题时,二分法可以大大提高算法的效率。\[3\] #### 引用[.reference_title] - *1* *2* *3* [算法第三期——二分法Python)](https://blog.csdn.net/m0_69478345/article/details/128442080)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PmB

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值