能不能用二分

补全 can_binary:数组有序才返回 True。 判的是原始那组没排序的数——⚠️ 动手二分之前先问这一句,能省掉很多说不清的 bug。

开始练习 →

二分要哪几个变量

写二分查找,至少要有【0】。

开始练习 →

中点怎么算

二分里的中点下标算法是【0】。

开始练习 →

目标比中点小的时候

要找的值比中点那个小,接下来应该【0】。

开始练习 →

二分找 24 落在哪个下标

运行下面这段程序: def bfind(a, target): lo = 0 hi = len(a) - 1 while lo <= hi: mid = (lo + hi) // 2

开始练习 →

写一个二分查找

补全 bfind:返回目标的下标,找不到返回 -1。 这次找 24。

开始练习 →

找得到和找不到,一次验两种

同一个 bfind。把两个结果拼起来输出:找 24(在)和找 20(不在),中间用 / 隔开。 ⚠️ 范围缩到空(lo > hi)时循环自然结束,这时要返回 -1——但光会返回 -1 是不够的,找得到的那一半也得对。

开始练习 →

二分比了几次

补全 bsteps:返回二分比较的次数。 这次找 24。

开始练习 →

⚠️ 两种找法差多少步

同一个数组、同一个目标(24),把二分的步数和线性的步数拼起来输出(用 / 隔开)。 ——这两个数就是这条路线标题里那句"聪明地找 vs 傻傻地找"。

开始练习 →

有重复元素时普通二分返回哪个

数组里有好几个一样的值,普通二分返回的是【0】。

开始练习 →