Python搜索算法——二分搜索

二分搜索算法(Binary Search)是一种高效的搜索算法,用于在有序数组中查找目标元素。它通过反复将目标值与数组的中间元素进行比较,并根据比较结果缩小搜索范围,直到找到目标值或确定它不在数组中。

二分搜索算法步骤:

  1. 初始化左右指针,分别指向数组的起始和结束位置。
  2. 在每一步中,计算中间元素的索引,然后获取中间元素的值。
  3. 将目标值与中间元素的值进行比较。
    • 如果目标值等于中间元素的值,则找到目标元素,返回其索引。
    • 如果目标值小于中间元素的值,则在左半部分继续搜索。
    • 如果目标值大于中间元素的值,则在右半部分继续搜索。
  4. 重复上述步骤,直到找到目标元素或左右指针相遇(表示目标元素不在数组中)。

二分搜索算法示例实现:

def binary_search(arr, target):"""在有序数组中进行二分搜索,并返回目标元素的索引(如果找到)。Parameters:arr (list): 有序数组。target: 要搜索的目标元素。Returns:int: 目标元素的索引,如果找到;否则返回-1。"""left, right = 0, len(arr) - 1while left <= right:mid = left + (right - left) // 2if arr[mid] == target:return midelif arr[mid] < target:left = mid + 1else:right = mid - 1return -1# 示例数组
arr = [2, 4, 6, 8, 10, 12, 14]
# 目标元素
target = 10# 进行二分搜索
index = binary_search(arr, target)
if index != -1:print(f"目标元素 {target} 在数组中的索引为 {index}")
else:print(f"数组中未找到目标元素 {target}")

以上是二分搜索算法的实现示例。

由于二分搜索算法每次都将搜索范围减半,因此其时间复杂度为O(logn),其中n是数组的长度。这使得二分搜索算法在大规模有序数组中查找目标元素时非常高效。

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

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

相关文章

MSA7T10 DVBT2高清机顶盒方案

一、方案描述 MSA7T10系列芯片是Mstar推出的极富竞争力的DVB-T2机顶盒FTA方案&#xff0c;芯片内置64MB DDR2和T2解调器&#xff0c;支持T2 1.3.1规范&#xff0c;支持HEVC&#xff0c;H.264&#xff0c;MPEG高清视频&#xff0c;支持PVR/Timeshit功能&#xff0c;支持各种多媒…

Prometheus收集、存储和分析主机和服务质量

普罗米修斯&#xff08;Prometheus&#xff09;是一款开源的监控和警报解决方案&#xff0c;用于收集、存储和分析各种指标数据。它可以与各种编程语言配合使用&#xff0c;通过暴露特定格式的HTTP端点来监控主机上的指标。 以下是一个简单的Python脚本&#xff0c;用于监控主…

曲线生成 | 图解Reeds-Shepp曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 什么是Reeds-Shepp曲线&#xff1f;2 Reeds-Shepp曲线的运动模式3 Reeds-Shepp曲线算法原理3.1 坐标变换3.2 时间翻转(time-flip)3.3 反射变换(reflect)3.4 后向变换(backwards) 4 仿真实现4.1 ROS C实现4.2 Python实现4.3 Matlab实现 0 专栏介绍 &#x1f5…

如何利用社媒群组如何高效开发国外客户

现在社媒营销也是越来越流行了&#xff0c;很多外贸人都开始做社媒营销。社媒营销相对来说是比较有温度的一个营销&#xff0c;因为大部分社媒平台都支持在线聊天&#xff0c;触达的即时性是比较高的&#xff0c;效果也比传统的一些方法要好一些。 当然做社媒也是有难度的&…

西藏实景三维技术研讨交流会成功举办

2024年3月21-22日&#xff0c;西藏自治区“实景三维技术研讨交流会”在拉萨成功举办。 本次会议由西藏自治区自然资源厅、自然资源部重庆测绘院指导&#xff0c;西藏自治区测绘学会、西藏自治区地理信息产业协会主办&#xff0c;武汉大势智慧科技有限公司&#xff08;后简称“…

SLAM中的三维运动学【SLAM】

李群视角下的运动学 连续时间下的运动学模型 物体在连续时间下运动的位姿由 R ( t ) R(t) R(t)和 t ( t ) t(t) t(t)表示&#xff0c;根据 R R R的正交性质有&#xff1a; R ( t ) T R ( t ) I R(t)^{T}R(t) I R(t)TR(t)I 公式两边对时间 t t t求导有&#xff1a; R ( t …

数据库-索引快速学

索引 当表中数据量庞大时&#xff0c;往往搜索一条数据就会耗费很长的时间等待 索引是帮助数据库高效获取数据的数据结构 create index 索引名 on 数据表名&#xff08;字段名&#xff09;;为该表下的某一字段创建索引&#xff0c;检索耗时会大大的减小 索引的优缺点 优点&…

【Python BUG】CondaHTTPError解决记录

问题描述 CondaHTTPError: HTTP 429 TOO MANY REQUESTS for url https://mirrors.ustc.edu.cn/anaconda/pkgs/free/win-64/current_repodata.json Elapsed: 00:26.513315 解决方案 找到用户路径下的 .condarc文件&#xff0c;建议用这个方法前和我一样做个备份&#xff0c;方…

python中类的导入与使用

1、类的介绍 与C中面向对象思想类似&#xff0c;有时候为了方便&#xff0c;需要专门创建一个类&#xff0c;将相关的函数全部写入到该类中&#xff0c;方便后续创建对象&#xff0c;再使用类中函数。那么如何创建完类&#xff0c;在其他文件中使用类中函数&#xff0c;这是这篇…

Python Flask框架 -- flask-migrate迁移ORM模型

# 之前使用的这个db.create_all()很有局限性&#xff0c;它不能把在class里修改的东西同步上数据库&#xff0c;所以不用了 # with app.app_context(): # 请求应用上下文 # db.create_all() # 把所有的表同步到数据库中去 例如&#xff0c;在User类中增加一个email字段&…

STM32和GD32内部时钟与外部时钟讲解

STM32F103为例: 1. 当 HSI 被用作 PLL 时钟输入时,可以实现的最大系统时钟频率为 64 MHz。 2. 要使 USB 功能可用,必须同时启用 HSE 和 PLL,并使 USBCLK 运行在 48 MHz。 3. 要实现 ADC 转换时间为 1 s,APB2 必须为 14 MHz、28 MHz 或 56 MHz。 ①. HSE = 高速外部时钟信号…

浅谈机器学习分类

I. 前言 在这个信息时代&#xff0c;数据的快速发展促进了人工智能&#xff08;AI&#xff09;等智能化技术的迅速发展。机器学习&#xff08;Machine Learning&#xff09;作为人工智能的重要分支之一&#xff0c;在数据处理、预测分析、模式识别等方面具有广泛的应用。前言的…

[linux初阶][vim-gcc-gdb] OneCharter: vim编辑器

一.vim编辑器基础 目录 一.vim编辑器基础 ①.vim的语法 ②vim的三种模式 ③三种模式的基本切换 ④各个模式下的一些操作 二.配置vim环境 ①手动配置(不推荐) ②自动配置(推荐) vim是vi的升级版,包含了更加丰富的功能. ①.vim的语法 vim [文件名] ②vim的三种模式 命令…

爬取搜狗翻译项目实例

视频中讲解的是百度翻译&#xff0c;但是视频中的方法现在已经不适用了&#xff0c;因为他们对 URL 的参数进行了修改&#xff0c;导致没法直接修改参数来爬取对应的翻译结果&#xff0c;这里我使用搜狗翻译来做演示&#xff0c;原理是一样的。 我们搜索的关键字会返回在 URL 中…

家用超声波清洗机高端品牌推荐!4款值得入手的热门超声波清洗机

急着洗眼镜的朋友先不要慌&#xff0c;虽然洗眼镜是日常生活中最常见的操作&#xff0c;但是在清洗眼镜方面也是有讲究的&#xff0c;不是随随便便把眼镜擦一下就算清洁干净了&#xff01;因为我们拿眼镜布擦眼镜的时候&#xff0c;布料粗糙的微粒就会跟砂纸一样打磨着镜片&…

【python】flask模板渲染引擎Jinja2中的模板继承,简化前端模块化开发

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

[树莓派5][linux][已解决] arecord -D “plughw:1,0“ 的设备序号怎么确定?

我们常用这条命令来测试麦克风录音&#xff1a; arecord -D "plughw:1,0" -f dat -c 1 -r 16000 -d 10 test.wav 其中plughw:1,0这个格式是&#xff1a; plughw:<card>,<device> 我们先用这条命令来查看设备&#xff1a; aplay -l 我查询到的是 **** Li…

Python:语法糖

注意&#xff1a;本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 &#xff08;[www.aideeplearning.cn]&#xff09; 在编程世界中&#xff0c;有一个词语听起来既甜蜜又神秘&#xff1a;语法糖&#xff08;Syntactic Sugar&#xff09;。这个术语并不是指真正的糖…

什么是Prompt Tuning?

本文是观看视频What is Prompt Tuning?后的笔记。 大语言模型&#xff08;如ChatGPT &#xff09;是基础模型&#xff0c;是经过互联网上大量知识训练的大型可重用模型。 他们非常灵活&#xff0c;同样的模型可以分析法律文书或撰写文章。 但是&#xff0c;如果我们需要用其解…

欧拉操作系统安装opengauss高斯数据库加postgis

怎么在openeuler20.03 x86_64上的opengauss 5.0安装yukon Issue #I8XT22 openGauss/Yukon - Gitee.com 1、拉取镜像 docker pull registry.cn-beijing.aliyuncs.com/supermap/yukon:2.0-opengauss5.0.0-amd64 2、运行加载 mkdir -p /Yukon/opengauss docker run --name Y…