Binary Search

简介: 二分查找(Binary Search)是一种在有序数组中查找目标值的算法。它的基本思想是将数组分成两半,判断目标值是否在左半部分或右半部分,然后递归地在相应的半部分中查找。这个过程不断重复,直到找到目标值或者确定目标值不存在为止。二分查找的时间复杂度为 O(logn),其中 n 是数组的长度。

二分查找(Binary Search)是一种在有序数组中查找目标值的算法。它的基本思想是将数组分成两半,判断目标值是否在左半部分或右半部分,然后递归地在相应的半部分中查找。这个过程不断重复,直到找到目标值或者确定目标值不存在为止。二分查找的时间复杂度为 O(logn),其中 n 是数组的长度。
使用二分查找的条件是:数组是有序的,且数组元素具有比较运算符。
场景案例:

  1. 在一个电话号码簿中查找某个人的电话号码。
  2. 在一个有序的文件列表中查找某个文件。
  3. 在一个数据库中根据某个关键字查找记录。
    Demo:

示例代码

def binary_search(arr, target):
left, right = 0, len(arr) - 1

while left <= right:  
    mid = (left + right) // 2  
    if arr[mid] == target:  
        return mid  
    elif arr[mid] < target:  
        left = mid + 1  
    else:  
        right = mid - 1  

return -1

示例数组

arr = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

示例目标值

target = 13

调用二分查找函数

result = binary_search(arr, target)

输出结果

if result != -1:
print(f"元素 {target} 在数组中的索引为 {result}")
else:
print(f"元素 {target} 不在数组中")
CopyCopy

在这个示例中,我们定义了一个名为 binary_search 的函数,它接受一个有序数组 arr 和一个目标值 target。函数通过二分查找算法在数组中查找目标值,如果找到,则返回目标值在数组中的索引;如果没有找到,则返回 -1。

目录
相关文章
|
网络协议 前端开发 数据库
从零开始学习后端开发
【2月更文挑战第9天】后端开发是目前互联网行业中非常热门的技术方向之一,也是很多程序员进阶的必经之路。本文将从零开始,系统性地介绍后端开发相关的知识点和技术栈,帮助初学者快速入门。
|
数据安全/隐私保护
fastadmin是如何设置没有权限的用户不能访问某些页面的?
fastadmin是如何设置没有权限的用户不能访问某些页面的?
963 0
|
11月前
|
机器学习/深度学习 人工智能 编解码
Lumina-Image 2.0:上海 AI Lab 开源的统一图像生成模型,支持生成多分辨率、多风格的图像
Lumina-Image 2.0 是上海 AI Lab 开源的高效统一图像生成模型,参数量为26亿,基于扩散模型和Transformer架构,支持多种推理求解器,能生成高质量、多风格的图像。
911 17
Lumina-Image 2.0:上海 AI Lab 开源的统一图像生成模型,支持生成多分辨率、多风格的图像
|
NoSQL Redis Windows
windows环境启动redis-server.exe出现闪退问题解决方案(亲测有效)
windows环境启动redis-server.exe出现闪退问题解决方案(亲测有效)
2232 0
|
存储 安全 Linux
Linux权限之谜:一步步教你如何解锁sudo权限并窥视/etc/shadow的神秘面纱!
【8月更文挑战第22天】在Linux中,`sudo`命令让授权用户能以其他用户(通常是root)身份运行命令。关键的安全文件`/etc/shadow`存储用户密码哈希,仅root可读。要使用`sudo`,需确保账户被列入`sudoers`文件中。系统管理员可通过`visudo`编辑此文件来赋予用户权限,例如添加`username ALL=(ALL) NOPASSWD: ALL`行。获得`sudo`权限后,可运行`sudo cat /etc/shadow`查看文件内容,但需谨慎操作以免影响系统安全。遵循最小权限原则,确保安全使用这些强大工具。
1003 2
|
机器学习/深度学习 人工智能 自然语言处理
【机器学习】python之人工智能应用篇--游戏生成技术
游戏生成技术,特别是生成式人工智能(Generative Artificial Intelligence, 简称Generative AI),正逐步革新游戏开发的多个层面,从内容创作到体验设计。这些技术主要利用机器学习、深度学习以及程序化内容生成(Procedural Content Generation, PCG)来自动创造游戏内的各种元素,显著提高了开发效率、丰富了游戏内容并增强了玩家体验。以下是生成式AI在游戏开发中的几个关键应用场景概述
522 2
|
存储 Unix C语言
STM32--RTC实时时钟
STM32--RTC实时时钟
801 0
|
Linux 虚拟化
麒麟系统开发笔记(一):国产麒麟系统搭建开发环境之虚拟机安装
麒麟系统开发笔记(一):国产麒麟系统搭建开发环境之虚拟机安装
麒麟系统开发笔记(一):国产麒麟系统搭建开发环境之虚拟机安装
|
编译器 数据库 索引
数据结构篇:树形数据结构的基本概念及其遍历方法
数据结构篇:树形数据结构的基本概念及其遍历方法
574 0