分治法实现二分查找(python)

news/2024/5/20 23:51:38/文章来源:https://blog.csdn.net/Godsolve/article/details/127281499

问题描述:

改写二分查找算法:设a[1…n]是一个已经排好序的数组,改写二分查找算法:

  1. 当搜索元素x不在数组中时,返回小于x的最大元素位置i,和大于x的最小元素位置j; (即返回x的左、右2个元素)

  2. 当搜索元素x在数组中时,i和j相同,均为x在数组中的位置;

  3. 并计算其时间复杂度?

代码如下:

# -*- coding: utf-8 -*-
"""
Created on Tue Oct 11 09:07:23 2022@author: Dell
"""
def BSearch(ary, left, right, result) :if result < ary[0] :print('小于最小值',ary[0])return -1if result > ary[right]:print('大于最大值',ary[right])return -1while left <= right :mid = int((left+right)/2)if ary[mid]==result :print('x的元素位置i为',mid, ' 值为:', ary[mid])breakelse :if ary[mid]<result:left = mid + 1if ary[left] > result :print('小于x的最大元素位置i为',left-1, ' 值为:', ary[left-1])print('大于x的最小元素位置j为',left, ' 值为:', ary[left])breakif ary[mid]>result:right = mid - 1if ary[right] < result :print('大于x的最小元素位置j为',right + 1, ' 值为:', ary[right+1])print('小于x的最大元素位置i为',right, ' 值为:', ary[right])breakreturn -1if __name__=='__main__':input_list = [1, 2, 5, 8, 9, 13, 17, 28, 32, 36, 41]left = 0right = len(input_list) - 1result = 15BSearch(input_list, left, right, result)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第一次二分后,在n/2个元素中查找;
第二次二分后,在n/2^2 个元素中查找;

设t为查找次数,最坏情况下,只剩下一个元素,即n/2^t =1,那么t = log2⁡(n),
所以时间复杂度为O(log2(⁡n))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_22249.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系动词使役动词

系动词 系动词的作用就是赋值 I am a rabbit 把 a rabbit赋值给i我 我是一只兔子 The rabbit is smart 这兔子是聪明的 smart赋值给兔子 系动词连系的方式,就是简简单单把它前后的概念含义连起来而已 所以系动词又叫连系动词 (Linking Verb) 就是把前后两端连起来(link)就好…

基于侧影轮廓的三维模型构建

建模过程 图像的获取 由于待建模物体具有较多细节,因此选择在同一个方向拍摄两个角度的照片(手机倾斜角大约为60度和45度,如下图所示),以及顶部细节照片,最终拍摄的有效照片为35张。模型构建 新建项目,并导入所有拍摄的照片照片掩饰 可以先采用自动掩饰工具将物体轮廓从…

kotlin koin

介绍 Koin是一个面向Android developer的依赖注入框架使用场景 为什么要用依赖注入框架? 比如我们有一个下载器对象Downloader,需要下面三个对象才能完成构造。但是这个下载器对象在各个活动中使用频繁val executor = Executor() val client = HttpClient() val request = Re…

使用 Zpan 搭建低成本个人私有网盘,还不限速

摘要&#xff1a;本文就介绍一个不限速的低成本个人网盘——ZPan&#xff0c;相较于老牌的私有网盘 OwnCloud 等&#xff0c;Zpan 有一个独有的优势&#xff1a;不限速。本文分享自华为云社区《使用 Zpan 搭建低成本个人私有网盘》&#xff0c;作者&#xff1a; 云存储开发者支…

甘特图:制定项目计划的三个要点

任何事情都要有计划&#xff0c;这样才能保证自己的事情按照既定的目标和轨迹推进 制定计划首先要明确以下三点&#xff1a; 1、目标明确&#xff1a;做这个项目是做什么的要达成什么目标。 2、任务明确&#xff1a;达成这个目标要做哪些事&#xff0c;有具体的实施推进步骤。…

MP-SPDZ详细介绍

基础知识概述 隐私计算底层协议包括两种&#xff1a;其一是基础的加密传输协议&#xff0c;用于信息分发&#xff0c;包括不经意传输、秘密分享、同态加密、零知识证明等。其二是加密计算协议&#xff0c;包括乱码电路、同态加密、零知识证明等。 不经意传输是所有隐私计算协…

python 运行错误收集

目录global全局声明错误 global全局声明错误 SyntaxError: name is_login is used prior to global declaration 解决办法:global is_login 放在 if is_login:的上面 is_login = Falsedef login_auth(func_name):def inner(*args, **kwargs):if is_login:res = func_name(*arg…

AlphaZero强化学习模型

搬来了DeepMind的AlphaTensor DeepMind前不久发在Nature上的论文Discovering faster matrix multiplication algorithms with reinforcement learning引发热议。 这篇论文在德国数学家Volken Strassen「用加法换乘法」思路和算法的基础上&#xff0c;构建了一个基于AlphaZero…

[GWCTF 2019]我有一个数据库

打开题目是乱码&#xff0c;好奇怪 御剑扫一下 扫到了phpmyadmin 版本为4.8.1 这个版本是有漏洞的&#xff08;CVE-2018-12613&#xff09;&#xff0c;复现一下 部分源码&#xff1a; $target_blacklist array (import.php, export.php ); ​ // If we have a valid target…

SpringBoot统一处理返回格式

在对接第三方接口的时候&#xff0c;第三方接口返回格式形式为{"result":null,"status":1010}&#xff0c;虽然返回了状态码&#xff0c;但是状态码对应的描述信息并没有携带&#xff0c;前端在使用的时候需要根据状态码返回一个友好的提示&#xff0c;如此…

刘韧:我每时每刻都会注意管理自己的知识

1. 担心总能让我积极行动起来。2. 要提早主动求变&#xff0c;不要等到被迫地、见招拆招地应变。3. 很多愚蠢的念头&#xff0c;都源于自己分内的事&#xff0c;却老想让别人负责&#xff0c;比如将自己的愿望寄托在子女身上。4. 推卸责任的同时&#xff0c;多少会对等地给予一…

ShardingSphere 5.2.0:分片审计功能拦截多分片场景下的不合理请求

一、背景Apache ShardingSphere 基于用户的实际使用场景&#xff0c;为用户打造了多种实用功能&#xff0c;包括数据分片、读写分离等。在数据分片功能中&#xff0c;我们发现有些用户涉及到的分片较多&#xff0c;一个分片逻辑表可能对应后端 1000 个物理表&#xff0c;这给用…

猿创征文 | 国产数据库实战之TiDB 数据库快速入门

猿创征文 | 国产数据库实战之TiDB 数据库快速入门一、系统检查1.检查系统版本2.查看本地IP地址3.TiDB集群介绍二、快速部署本地测试集群1.安装 TiUP工具2.声明全局环境变量3.快速部署TiDB 集群三、连接 TiDB 数据库1.新开一个session 以访问 TiDB 数据库2.通过Mysql客户端连接T…

SpringSecurity整合JWT+Oauth2认证

没写完&#xff0c;推荐下面的博客 推荐博客<查看pom依赖、数据库sql、实体类、数据映射>&#xff1a;SpringSecurity框架 推荐博客<查看SpringSecurity整合JWTOauth2认证>&#xff1a;SpringSecurity整合JWTOauth2认证 一 创建项目 测试浏览器&#xff1a;建议使用…

网课查题系统-公众号轻松调用方法

网课查题系统-公众号轻松调用方法 本平台优点&#xff1a; 多题库查题、独立后台、响应速度快、全网平台可查、功能最全&#xff01; 1.想要给自己的公众号获得查题接口&#xff0c;只需要两步&#xff01; 2.题库&#xff1a; 查题校园题库&#xff1a;查题校园题库后台&am…

Django ORM F对象和Q对象查询

Django ORM F对象和Q对象查询1.F对象查询2.Q对象查询Django提供了两个非常有用的工具&#xff1a;F对象和Q对象&#xff0c;方便了在一些特殊场景下的查询过程。 1.F对象查询 F对象用于操作数据库中某一列的值&#xff0c;它可以在没有实际访问数据库获取数据值的情况下对字段…

史上最简SLAM零基础解读(7) - Jacobian matrix(雅可比矩阵) → 理论分析与应用详解(Bundle Adjustment)

本人讲解关于slam一系列文章汇总链接:史上最全slam从零开始 文末正下方中心提供了本人联系方式&#xff0c;点击本人照片即可显示WX→官方认证{\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式&#xff0c;\color{blue}点击本人照片即可显示WX→官方认证}文末正…

基于微信小程序的毕业设计题目(23)php汽车维修保养小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)

项目背景和意义 目的&#xff1a;本课题主要目标是设计并能够实现一个基于微信汽车维修保养小程序系统&#xff0c;前台用户使用小程序&#xff0c;小程序使用微信开发者工具开发&#xff1b;后台管理使用基PPMySql的B/S架构&#xff0c;开发工具使用phpstorm&#xff1b;通过后…

毕业设计 单片机stm32智能路灯智能灯控系统 - LoRa远程通信

文章目录0 前言1 简介2 主要器件3 实现效果4 设计原理4.1 Lora模块4.2 DHT11温湿度传感器4.3 光照传感器5 部分核心代码6 最后0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩…

springboot使用布隆过滤器——缓存穿透

目录 1.布隆过滤器原理 2.具体使用场景 3.springboot集成布隆过滤器 4.总结 1.布隆过滤器原理 布隆过滤器&#xff08;Bloom Filter&#xff09;是非常经典的以空间换时间的算法。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否…