首页 > 编程语言 >python中的二分查找

python中的二分查找

时间:2023-04-07 16:48:01浏览次数:37  
标签:二分 arr right return python mid 查找

二分查找的前提是查找的数据按照顺序排序

二分查找的核心思想是递归

# arr:查找的对象
# left:arr的左边界
# right:arr的右边界
# x:需要查找的数
def binary_search(arr,left,right,x):
    # 左边界小于等于右边界
    if left<=right:
        # 得到中位数
        mid=int((left+right)//2)
        # x小于中位数,说明x在左半边,右边界为mid-1(从下标0开始找)
        if x<arr[mid]:
            # 递归继续找
            return binary_search(arr,left,mid-1,x)
        # x大于中位数,说明x在右半边,左边界为mid+1
        elif x>arr[mid]:
            # 递归继续找
            return binary_search(arr,mid+1,right,x)
        # 直到最后找到返回下标
        elif x==arr[mid]:
            return mid
    else:
        return '数据不存在'
    
arr = [1,2,3,4,5,6]
x = 3
# 用result来接收下标的值:2
result = binary_search(arr,0,len(arr-1),3)

 

标签:二分,arr,right,return,python,mid,查找
From: https://www.cnblogs.com/zy7941246/p/17296652.html

相关文章

  • Python Qt 文件转换
    PythonQt文件转换ui文件编译成py文件用windows操作系统的cmd窗口转换进入cmd所在ui文件路径下,执行如下命令:pyside6-uicstudent.ui-ostudent.py用批处理形式转换建立扩展名为bat的文件,双击打开就好。cd/ee:\pythonpyside6-uicstudent.ui-ostudent.py编写pytho......
  • 获取Python函数信息的方法
    Python的反射机制可以动态获取对象信息以及动态调用对象,本文介绍如何获取对象中的函数注释信息以及参数信息。定义一个Person类:classPerson():deftalk(self,name,age,height=None):"""talkfunction:return:"""print(f"Mynamei......
  • python操作git
    安装模块pip3installgitpython#coding:utf-8importosfromgit.repoimportRepofromgit.repo.funimportis_git_dir#pip3installgitpythonclassGitRepository(object):"""git仓库管理"""def__init__(self,......
  • Python 之生成验证码
    一、代码importrandomfromioimportBytesIOfromPILimportImage,ImageDraw,ImageFont,ImageFilterclassCaptcha:def__init__(self,width,height,code_num=4,code_type=1,font_size=24,is_blur=True,font='Arial.ttf',x_......
  • Python求100以内的素数常用方法!
    与其他编程语言对比,Python拥有十分独特的优势代码量少,相同功能其他编程语言需要上百行代码才可以实现,而Python只需要十几行就可以实现。而且在Python中,我们只需要学会一些基础的语法就可以实现简单的数值计算,那么Python求100内的所有素数方法是什么?具体内容请看下文。质数......
  • [每天例题] 查找输入整数二进制中1的个数
    查找输入整个二进制中1的个数题目 题目分析计算它在二进制下的1的个数。注意多组输入输出!!!!!! 数据范围:1≤n≤2^31 −1 思路分析1.多组数据的输入方法:1.EOF法因为在线评测系统的输入数据存放在一个文件中,因此可以通过文件是否结束的方式判断输入的数据是否结束。scanf......
  • Python中的时间函数strftime与strptime对比
    一、striftime将给定格式的日期时间对象转换为字符串。日期时间对象=>字符串,控制输出格式.date、datetime、time对象都支持strftime(format) 方法,可用来创建由一个显式格式字符串所控制的表示时间的字符串。用法:datetime.strftime(format)importdatetimedt=datetime.dateti......
  • python+playwright 学习-50 pytest-playwright 多账号操作解决方案
    前言pytest-playwright插件可以让我们快速编写pytest格式的测试用例,它提供了一个内置的page对象,可以直接打开页面操作。但是有时候我们需要2个账号是操作业务流程,比如A账号创建了一个任务,需要用到B账号去操作审批动作等。如果需要2个账号同时登录,可以使用context上下文,它可......
  • Python源码笔记——Python中的列表对象
    1.列表结构体#definePyObject_VAR_HEADPyVarObjectob_base;typedefstruct{PyObjectob_base;Py_ssize_tob_size;/*Numberofitemsinvariablepart*/}PyVarObject;typedefstruct{PyObject_VAR_HEAD/*Vectorofpointerstolistel......
  • Python源码笔记——Python对象机制的基石【PyObject】
    所有源码均基于Python3.11.21.PyObject定义//实际上没有任何东西被声明为PyObject,但是每个指向Python对象的指针都可以转换为PyObject*。//这是手动模拟的继承。同样的,每个指向可变大小的Python对象的指针也可以转换为PyObject*,此外,也可以转换为PyVarObject*。typedefst......