二分法 讲解

文章介绍了三种二分查找变体:查找不符合条件的最小值和最大值,以及找到符合条件区域的边界。重点在于处理连续区间和特殊情况下浮点数的二分搜索。
摘要由CSDN通过智能技术生成

check 是用来判断是否满足要求的值(一般要自己写的函数)

不符合条件的check:

注意这个版本的二分得到的是L是不符合check的,并且旁边一位是符合check的位置

一: 查找不符合条件的最小值:

这个版本的二分要求连续的[l,r]区间特性为:

l____k____r *(从l到k为符合check,从k到r不符合check),我们得到的l=k+1也就是说符合条件的最大值为k=l-1(l=k+1变形一下)注意(在k>r的情况下,也就是区间[l,r]都符合check的情况下得到的l为最后一位

二:查找不符合条件的最大值:

这个版本为l____k_____r (l到k为不符合条件,k到r为符合条件) 我们得到的r=k-1也就是k=r+1;

三:符合check版本:

这个版本就是得到的l 就是符合check并且旁边就是不符合的的下标

查找符合条件的最大值

L_____K_____R (L到k为符合check,k到R为不符合check)

即L==K 注意(当所有区间都是不符合check的时候我们得到的L将会是区间的第一位是不符合条件的特殊情况需要特判一下)

查找符合条件的最小值:

L____K_____R (L到K为不符合条件,K到R为符合条件)即得到为R==K;

浮点二分法:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值