导航菜单
首页 >  网上考试怎么查找答案啊  > 二分查找 & 二分答案 万字详解,超多例题,带你学透二分。

二分查找 & 二分答案 万字详解,超多例题,带你学透二分。

很多人对二分感到很苦恼,很困惑,可能是因为二分的边界很难掌握,也许是判断条件难写…

然而,很幸运,你找到了这篇文章,仔细看下去,这篇文章将带你学透二分!!!

二分可以简单分为二分查找与二分答案。

可能你听说过二分查找,二分查找和二分答案是不是一回事呢?答案是否定的。二分查找只是单纯的查找就可以了,简单的控制好边界条件。而二分答案也许稍复杂些。

首先,我们看一下二分的模板: 模板1: while (l > 1;//(l+r)/2if (check(mid)) r = mid;// check()判断mid是否满足性质else l = mid + 1;} 模板2: while (l > 1;//(l+r+1)/2if (check(mid)) l = mid;else r = mid - 1;}

看到这,以后的你就不会因为边界问题而困惑了!!!

第一个模板是尽量往左找目标,第二个模板是尽量往右找目标。

只要是往左找答案,就用第一个模板,mid不用加一,r=mid,l加一; 只要是往右找答案,就用第二个模板,mid要加一,l=mid,r要减一;

二分套这两个模板,肯定没错!(只要判断条件写对)亲测有效!!! 下面的题目更能证明这句话!

这两个模板一定要牢牢记住哦

当然,二分可能在实数中进行,那自然少不了浮点二分。

模板3:(浮点二分) while(r-l>1e-5) //需要一个精度保证{double mid = (l+r)/2;if(check(mid)) l=mid; //或r=mid;else r=mid; //或l=mid;}

浮点二分就相对简单多了,因为浮点除法不会取整,所以mid,l,r,都不用加1或减1.

我们先来学二分查找:

二分查找也称折半查找,顾名思义,就是每次查找去掉不符合条件的一半区间,直到找到答案(整数二分)或者和答案十分接近(浮点二分)。

光说不练假把式,来个例题:

例题1——查找

在这里插入图片描述 分析:这题就是典型的二分查找入门题。

首先,区间是有单调性的,查找第一次出现的位置,如果查到一个值比目标值大,就把右半边放弃,因为右半边肯定也比目标值大;同样,如果查到值比目标值小,那就放弃左半边。

相关推荐: