详解二分查找,二分查找基础教程+进阶练习

本文详细介绍了二分查找的基本模型和步骤,通过图解和递归过程阐述了如何在一个有序数组中查找目标值。此外,还提出了一个进阶问题,探讨如何运用二分查找解决实际问题,如裁剪绳子成等长段,分析了在该问题中应用二分查找的条件和范围确定。
摘要由CSDN通过智能技术生成

二分查找,就是通过每次将查找范围缩小一半的方法,最终锁定目标。话不多说,直接看最基础的二分查找模型

二分查找基础模型

输入:
一个有序数组,int[] arr
一个目标值,int key
输出:
目标值的索引位置

我们通过图解来理解二分查找

在这里插入图片描述
二分查找本质上是一个递归查找的过程,每一次的递归运算分三步

第一步,判断数组的正中心(center)是否为key,如果是,输出结果,如果不是,进入下一步

注:当数组size为偶数,也就是说没有中心的时候,我们任选中心两个数据之一作为中心
在这里插入图片描述
在这个例子中,显然中心arr[8]不等于key

第二步,判断key在center的左边还是右边

因为这是一个有序数组,我们可以通过判断大小,判断左右。在这个例子中key<arr[8],key在center的左边。

第三步,在左边,将数组右端点更新为center;在右边,将数组的左端点更新为center。递归

在这里插入图片描述
这时我们可以忽略掉arr[8]已经其之后的数据,在下一次的递归中,在0-7的范围内重复上面的过程。

余下过程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
代码实现:

public class BinarySearch {
   

    public static int binarySearch(int[] arr, int key) {
   
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值