二分查找要求被搜索的序列是有序的,否则无法保证正确性。
二分查找每次将搜索范围减半,仅适用于有序序列。注意边界条件的处理(左闭右开或左闭右闭)。
二分查找的边界条件极易出错。建议统一使用左闭右闭[left,right]或左闭右开[left,right),每次循环都要缩小范围。
【考点】二分查找前提条件|有序序列要求|选择题陷阱
1. 考纲定位 本题考查《GESP 大纲》二级"算法基础"中的二分查找模块。命题人专门卡住考生对"算法前提条件"的敏感度——很多学生背了二分查找的写法,却忽视它必须建立在有序数组上,这是算法正确性的基石而非锦上添花。
2. 解题思维 看到这句话先想:二分的核心逻辑是每次折半区间,取中间值与目标比较来决定左/右半区。如果序列无序,中间值完全失去比较意义,折半就变成瞎蒙,复杂度从 O(log n) 直接崩塌到 O(n)。因此"有序"不是加分项,而是必要条件——没有它,二分算法的正确性证明中的单调性假设全部失效。
3. 陷阱拆解
4. 反命题思维 如果改成"若序列无序,则无法使用二分查找",答案不变;若改成"若序列无序,但允许先排序再二分",答案变 B。刷到类似题,先问自己"命题人想考我什么":是在考算法前提条件,还是在考预处理操作?