GESP 五级 · GESP 202412 C++ 五级 第 24 题

判断题 · 答案 A · 考点:二分查找、时间复杂度分析

← 整套速查表 GESP 五级 全部真题

题目

对有序数组 $\{5, 13, 19, 21, 37, 56, 64, 75, 88, 92, 100\}$ 进行二分查找,成功查找元素 19 的比较次数是 2。

答案:A

考点

二分查找 讲解 →二分查找 真题汇总 →时间复杂度分析

解题思维

仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。

常见错误

审题时注意题目要求(选正确还是选错误),避免因审题不清失分。涉及代码的题目要逐行分析变量变化。

详细解析(节选)

【考点】二分查找|数组操作|时间复杂度

二分查找的核心在于每次将搜索区间减半。初始区间[0,10],中点5对应值56大于目标19,故右指针移至4;新区间[0,4]中点2对应值19等于目标,比较2次即成功。此类题的通法是:先计算中点,再判断大小关系,根据结果收缩区间,直至找到或区间为空。

命题人设下的隐形陷阱在于"比较次数"的定义与实现细节。若考生只记得二分查找会减少一半,却未仔细追踪具体步骤,极易误判为3次或1次。更阴险的是,部分实现用(left+right+1)/2作为中点,会导致区间收缩方向错误,从而多算或少算一次比较。本题中目标19恰好落在第二次中点索引2,若忽略数组下标从0开始,就会把索引3当成中点,导致比较次数变为3次。

若将目标改为100,比较次数将变为3次;若改为不在数组中的数,则需计算失败查找的比较次数。命题人常在此类题中偷换概念,比如问"查找19需要几次比较"却隐含"查找失败的情况"。刷到类似题时,先问自己"题目问的是成功查找还是失败查找?比较次数是迭代次数还是具体比较操作?"此外,若题目将数组改为无序,则二分查找失效,必须改用线性查找,这也是命题人常用的干扰项。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断