查找算法——二分查找

二分查找,又称折半查找,是一种高效的查找方法,适用于有序的顺序存储结构。基本思路是通过比较中间元素与目标值来缩小查找范围。递归实现中,通过不断调整查找区间直至找到目标值或搜索范围为空。该算法在最坏情况下的比较次数为log2(n+1),期望时间复杂度为O(log2n)。
摘要由CSDN通过智能技术生成

二分查找

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,二分查找要求线性表必须采用 顺序存储结构,而且表中元素按关键字有序排列。

基本思路

首先,假设表中元素是按升序排列,将表中间位置的数的值待查找数的值比较,如果两者相等,则查找成功;
否则利用中间位置记录将表分成前、后两个子表,
若中间位置值 < 待查找值,则进一步查找前一子表,
若中间位置值 > 待查找值,则进一步查找后一子表。
重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

分析

用递归法来写代码

  1. 首先确定该数组的中间下标
    mid = ( left+right ) / 2

  2. 然后让带查找的数的值 findVal 和 arr[mid] 比较
    findVal < arr[mid]; 说明要查找的数再mid的右边,因此向右继续查找。
    findVal > arr[mid]; 说明要查找的数再mid的左边,因此向右继续查找。
    findVal == arr[mid]; 说明找到,就返回。

什么时候结束递归?

  1. 找到就结束 。 即:findVal == arr[mid] 时
  2. 递归完整个数组,仍没有找到 findVal ,也需要结束递归。即:left > right

代码

public class BinarySearch {
   
    public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值