对数组进行二分查找的过程中,以下哪个条件必须满足?
这题考二分查找的核心前提。拿到题先别想代码,脑子里过一遍二分的过程:每次对半砍掉一半,砍的依据是什么?如果数组乱序,中间值根本没法代表左右两边的范围,那'砍'就失去了意义,所以有序是绝对必要条件。
最容易掉进C选项的坑,觉得二分必须长度是2的幂。其实二分靠的是区间对半,长度是3、5、100都行,只要中间能取到就行。D选项也容易让人犹豫,以为必须是整数,其实只要能比较大小(比如有序的浮点数、字符串)都能二分。记住,有序是灵魂,其他都是浮云。
算法 — 二分查找
二分查找(Binary Search):在有序数组中,通过反复将搜索区间对半分割来定位目标值。每次比较中间元素,若相等则返回;若目标值小于中间元素则在左半部分继续;否则在右半部分继续。它的核心在于“有序”二字,只有有序才能利用中间值排除一半的搜索空间。
命题人喜欢挖“必要条件”的坑。二分查找的充分条件是数组有序,但题目问的是“必须满足”,也就是必要条件。除了有序,其他条件都不是必须的。比如数组长度不用是2的幂,元素不用是整数,只要能比较就行。命题人就是想看学生是不是真的理解二分的原理,而不是死记硬背代码。
mid = (l + r) / 2 就能处理所有情况,不需要长度是2的幂。0.1, 0.5, 1.2,或者有序字符串数组 "apple", "banana", "cherry",都能用二分查找。C 选项是常见陷阱——二分查找不要求长度是 2 的幂。很多学生看到“对半”就下意识觉得必须是2的幂,其实只要区间能划分就行。D 选项也容易让人犹豫,以为必须是整数,其实只要能比较大小(比如有序的浮点数、字符串)都能二分。记住,有序是灵魂,其他都是浮云。
见到“二分”二字,第一反应就是“有序”。二分查找 = 有序 + 比较 + 折半。时间复杂度 O(log n)。考试时看到选项里有“有序”,大概率就是它,除非题目明确说了数组乱序(那就不可能二分)。
二分查找是算法题中的高频考点,题库共考过 39 题,覆盖 7 个考试级别(2008-2026)。逐年分布:2008年2题、2009年1题、2011年2题、2019年1题、2021年1题、2022年2题、2023年4题、2024年9题、2025年7题、2026年5题、null年5题。分赛事:GESP 五级16题、GESP 七级7题、CSP 入门级5题、CSP 提高级5题、NOIP 提高组 初赛3题、NOIP 普及组 初赛2题、GESP 六级1题。从数据看,GESP 五级考得最多(16题),说明二分是基础算法中的重中之重。
暂无足够依据预测未来可能怎么考。