二分查找要求被搜索的序列是有序的,否则无法保证正确性。
二分查找每次将搜索范围减半,仅适用于有序序列。注意边界条件的处理(左闭右开或左闭右闭)。
二分查找的边界条件极易出错。建议统一使用左闭右闭[left,right]或左闭右开[left,right),每次循环都要缩小范围。
【考点】二分查找|有序性假设|算法正确性条件
考纲:GESP 五级《算法初步》。命题人卡住'二分查找=有序'这个前置条件认知盲区——很多学生以为只要 mid=(l+r)/2 就能用,不读题就选错。这题本质考的是'二分查找的单调性前提'。
思考链:二分是'猜中间'——每次把搜索区间折半,前提是折半后目标一定在左或右。若无序,折半就失去方向性,可能跳过目标,甚至把目标误判为不存在。核心观察:二分每次比较 mid 和 target 决定方向,依赖的是'单调性'而非'值大小'。
A 正确。命题人绝对化表述'否则无法保证正确性'——无序时二分可能直接跳过目标,甚至进入死循环。如果你以为'只要调整 mid 计算就能用',就会掉进陷阱。常见的错误是认为'只要 mid 计算正确,二分就能用'。
反命题:若改成'二分查找要求有序,否则可能失败',答案就变 B。刷题先问'命题人想考我什么'——这里考的是前提条件,不是实现细节。如果题目改成'二分查找在无序数组上一定能找到目标',那答案就是 B。先判断命题的绝对化程度。