【二分搜索法】中间向左还是向右

为什么要使用二分搜索法

假如现在有5个数从小到大排列,如下

134710

我们要找到数字7排在哪个位置,最简单的解决办法就是从头往后遍历就可以知道数字7在第四个
如果现在有10000个数字,要从中寻找到一个数字,仍使用遍历的方法,如果待寻找的数字排在第一个,则遍历算法是高效的,但是如果待寻找的数字排在最后一个,则寻找的时间复杂度大幅上升,因此,使用二分搜索法的时刻就到了

什么是二分搜索法

二分意为一分为二,即寻找一个中间数将原来的数组分为两部分,根据中间数和目标数的大小比较来确定下一个搜索区间,因为原数组是有序的,如果中间数大于目标数,说明目标数不会出现在中间数的左侧,只需搜索右侧区间,反之同理,由此简化计算量

二分搜索法怎么用

前提:保证数组的有序性
(假设数组 a 的左边界 left ,右边界 right,数组升序排列,寻找的数为tar)

  • 步骤
  1. 找到中间数 mid = (left + right) / 2
  2. 确定下一个搜索区间后,重复 1

a[mid] < tar 则 left = mid + 1
a[mid] > tar 则 right = mid - 1
a[mid] == tar 则完成搜索

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值