二分查找(基础)

在数据范围比较大,查询次数比较多的时候,用遍历查找元素很可能会超时。这时候就可以用到二分查找,但是得注意二分查找的前提是数组内的元素必须是有序的,个别非有序数组通过处理后变为有序时也能使用二分查找。

二分查找有两种类型:整数二分,浮点二分。

整数二分:

在进行整数二分的时候经常会遇到边界问题导致程序死循环,一般推荐使用两个模板来规避边界问题。

1.查找一个元素第一次出现的位置(即查找相同元素的最小下标)

向左边查找,移动右指针r。

2.查找一个元素最后一次出现的位置(即查找相同元素的最大下标)

向右查找,移动左指针。

注意:在两个模板中if判断中都应该使用带有等号的判断符(>=或<=)。

模板题:https://www.luogu.com.cn/problem/P2249

浮点二分:

浮点二分就只用一种情况,相比整数二分而言就不需要考虑边界问题。

看题目更好理解:https://www.luogu.com.cn/problem/P1163

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值