首页 > 编程语言 >二分查找算法的3种模板-PYTHON

二分查找算法的3种模板-PYTHON

时间:2025-01-16 09:56:20浏览次数:1  
标签:二分 binary search target nums PYTHON self 模板

class binary_search(object):
    def __init__(self, nums, target):
        self.nums = nums
        self.target = target

    def binary_search_template_1(self):
        if len(self.nums) == 0:
            return -1
        l, r = 0, len(self.nums) - 1
        while (l <= r):
            mid = (l + r) // 2
            if self.nums[mid] == self.target:
                return mid
            elif self.nums[mid] < self.target:
                l = mid + 1
            else:
                r = mid - 1
        return -1

    def binary_search_template_2(self):
        if len(self.nums) == 0:
            return -1
        l, r = 0, len(self.nums)
        while l < r:
            mid = (l + r) // 2
            if self.nums[mid] == self.target:
                return mid
            elif self.nums[mid] < self.target:
                l = mid + 1
            else:
                r = mid
        if l != len(self.nums) and nums[l] == self.target:
            return l
        return -1

    def binary_search_template_3(self):
        if len(self.nums) == 0:
            return -1
        l, r = 0, len(self.nums) - 1
        while l + 1 < r:
            mid = (l + r) // 2
            if self.nums[mid] == self.target:
                return mid
            elif self.nums[mid] < self.target:
                l = mid
            else:
                r = mid
        if self.nums[l] == self.target:
            return l
        if self.nums[r] == self.target:
            return r
        return -1

标签:二分,binary,search,target,nums,PYTHON,self,模板
From: https://www.cnblogs.com/cloucodeforfun/p/18674319

相关文章

  • 基于Python实现的微博用户信息爬取
    微博爬虫系列之用户信息爬取,通过Pythonrequest库实现。1. 用户ID获取可通过访问指定用户的主页获取,见下图红框(本文皆以薛之谦账号为例):2. 基本信息爬取(1)爬取接口res=requests.get("https://weibo.com/ajax/profile/info?uid="+userid,headers={"Cookie":cookie}).......
  • 利用Python实现远程心电监测系统
    前言心电图(ECG)是监测心脏健康的重要手段。随着物联网技术的发展,远程心电监测系统逐渐成为可能。这类系统可以帮助医生实时监控患者的心电数据,及时发现异常情况,提供更为及时和精准的医疗服务。本文将详细介绍如何使用Python编写一个简单的远程心电监测系统,包括数据采集、数......
  • 《CPython Internals》阅读笔记:p152-p176
    《CPythonInternals》学习第10天,p152-p176总结,总计25页。一、技术总结1.addinganitemtoalistmy_list=[]my_list.append(obj)上面的代码涉及两个指令:LOAD_FAST,LIST_APPEND。整章看下来这有这点算是可以记的了,其它的只感觉作者在零零碎碎的罗列内容。二、英语......
  • 可以用于分割字符串的方法(python)
    一、str.split(sep,maxsplit)函数(返回列表)sep:分隔符maxsplit:分割次数a="Helloworld"list1=a.split("",1)print(list1)结果:['Hello','world']二、str.rsplit(sep,maxsplit)函数(从右边开始分割,返回列表)sep:分隔符maxsplit:分割次数a="Helloworld&q......
  • Peewee:Python 简洁强大的 ORM 框架
    在Python的开发世界中,数据库操作是至关重要的一环。今天介绍的Peewee作为一款简洁且功能强大的ORM(对象关系映射)框架,为开发者提供了高效便捷的数据库交互方式。1.Peewee概述Peewee是一个简单小巧的ORM,它的概念简洁明了,易于学习和使用。能够与SQLite、MySQL、MariaDB、......
  • 【Niquests】最简单和先进的Python HTTP 客户端,完美替换Requests
    什么是NiquestsNiquests是一个简单而优雅的HTTP客户端,简单说它是Requests的直接替代品。因为多年来Requests功能一直处于停滞不前的状态,由于不前进的状态并且没有发展,这阻止了数百万开发人员使用更高级的功能,所以就有了Niquests,Niquests是唯一能够自动提供HTTP/1.1......
  • 搜索与图论(三)-最小生成树(Prim、Kruskal)和二分图(染色法、匈牙利法)
    目录一、最小生成树1.Prim算法 2.Kruskal算法二、二分图  1.判断二分图--染色体法 2.求二分图最大匹配--匈牙利算法一、最小生成树1.Prim算法         分为朴素Prim算法和堆优化Prim算法。写法和dijikstra算法类似,堆优化过程也类似,可类比学习。首......
  • C++ 类模板教程
    C++的类模板是泛型编程的核心特性之一,它让我们能够编写适用于多种类型的通用代码,从而提高代码的复用性和扩展性.本教程通过栈的实现为例,深入探讨类模板的实现,使用,以及特化,偏特化,默认参数和类型别名等高级特性,帮助您更全面地掌握这一强大工具.1.实现一个......
  • Windows python venv 虚拟开发环境
    前言全局说明Windowspythonvenv虚拟开发环境一、说明1.1环境:Windows11家庭版23H222631.3737Python3.8.10(tags/v3.8.10:3d8993a,May32021,11:48:03)[MSCv.192864bit(AMD64)]onwin32二、venv2.1创建项目目录mkdirxhs-monitorcdxhs-monito......
  • Windows pyenv管理多python 版本环境安装
    前言全局说明Windowspython多版本安装,因为开发功能和客户要求,py脚本会被要求不同版本,但是命令行输入时同一个名字只能对应一个版本,如果多个版本,那只能改名字。比如:python3.8python3.9有什么方法用一个python使用不同版本呢?一、说明1.1环境:Windows11家庭版23H2......