二分查找详解

二分查找是一种查找方式,用于在已经排好序的数组中寻找某个特定的数

我们直接来介绍二分查找的查找方法

左边界与右边界

左闭右闭:

n为数组元素个数,a为目标数字

我们以左闭右闭区间为例,left为左边界0,right为右边界n-1,范围为:[0,n-1];

之后我们的左右边界left,right必须始终满足左闭右闭。

因为是左闭右闭,所以是可以满足left==right的,因此while循环加上'='。

mid为中间值:(left+right)/2。

当数组中下标为mid的元素值大于目标值时

right=mid-1。因为mid已经比较过了,为了满足闭合,右边界必须为mid-1。

同理

当mid元素值小于目标值时

left=mid+1。同样因为mid已经比较过了,为满足左边界闭合,left必须为mid+1。

当mid元素值等于目标值时,返回下标。

以上为我们的函数实例。

左闭右开

左闭右开,左边界为0,右边界为n

left不能等于right,所以没有'='

mid大于目标值时

由于右开,mid位刚好比较过,那么right修改为mid

mid小于目标值时

由于左闭,mid位比较过,那么left修改为mid+1

以上为函数示例

相关推荐

  1. 二分查找详解

    2024-04-21 23:04:01       38 阅读
  2. 二分查找.

    2024-04-21 23:04:01       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-21 23:04:01       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-21 23:04:01       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-21 23:04:01       87 阅读
  4. Python语言-面向对象

    2024-04-21 23:04:01       96 阅读

热门阅读

  1. JUC之线程、并发、上下文基本概念

    2024-04-21 23:04:01       35 阅读
  2. Multiprocessing Freeze Support in Python

    2024-04-21 23:04:01       26 阅读
  3. LeetCode题练习与总结:编辑距离--72

    2024-04-21 23:04:01       35 阅读
  4. 卷积层、池化层和全连接层的作用分别是什么

    2024-04-21 23:04:01       38 阅读
  5. CentOS常见的命令用法和示例

    2024-04-21 23:04:01       37 阅读
  6. 使用 hiredis 客户端库封装一个简单的 Redis 类

    2024-04-21 23:04:01       37 阅读