写一个二分查找
补全 bfind 循环里的比较:返回目标的下标,找不到返回 -1。这次找 24。 (本题用 g++ -std=c++17 -O0 编译。)
找得到和找不到一起验
同一个 bfind。把两个结果拼起来输出:找 24(在)和找 20(不在),中间用 / 隔开。范围缩到空(lo > hi)时循环自然结束,这时要返回 -1。 (本题用 g++ -std=c++17 -O0 编译。)
二分比了几次
补全 bsteps:返回二分比较的次数。这次找 24。 (本题用 g++ -std=c++17 -O0 编译。)
两种找法差多少步
同一个数组、同一个目标(24),把二分的步数和线性的步数拼起来输出(用 / 隔开)。——这两个数就是这条路线标题里那句「聪明地找 vs 傻傻地找」。 (本题用 g++ -std=c++17 -O0 编译。)
有重复时普通二分返回哪个
第 1 步:三个 17,要最左边那个 第 2 步:中点是 17:先记下来 第 3 步:别急着停,继续往左找 第 4 步:15 小了:往右缩 第 5 步:又碰到 17:更新记录 第 6 步:范围空了:记录的就是最左 13 15 17 17 1
想拿到最左边那个怎么改
要让二分返回最左边的那个,改法是【0】。
左右边界能拿来做什么(C++)
同时求出左边界和右边界,最直接的用处是【0】。
最左边那个 17 在哪
数组是 13、15、17、17、17、23、24。运行下面这段程序: #include <iostream> #include <string> #include <vector> using names
最右边那个呢
同一个数组。运行下面这段程序: #include <iostream> #include <string> #include <vector> using namespace std; int righ
写一个左边界二分
补全 left_bound:返回目标最左边那个的下标,找不到返回 -1。 (本题用 g++ -std=c++17 -O0 编译。)