题库首页 › GESP等级认证(Python) › 题目 25976

在升序数组中用二分查找第一个大于等于 x 的位置。若当前中点 mid 满足 a[mid] < x ,下一步应( )。

A:令右边界变为 mid - 1
B:令左边界变为 mid + 1
C:立即返回 mid
D:交换 a[mid] 与 x

正确答案:B

答案解析

在升序数组中查找第一个大于等于 x 的位置时,使用二分查找维护左边界 l 和右边界 r。每次取中点 mid,判断 a[mid] 是否满足大于等于 x。若 a[mid] 满足条件,说明目标位置可能为 mid 或在其左侧,因此应将搜索范围收缩至左半部分,包括 mid。此时更新右边界为 mid - 1 会导致遗漏 mid 作为候选位置的可能性,故不可立即排除 mid 及其右侧。若 a[mid] 不满足条件,说明目标位置必在 mid 右侧,需将左边界更新为 mid + 1。当 a[mid] 满足条件时,不能立即返回 mid,因尚未确认其是否为最左侧的有效位置。整个过程需持续缩小区间直至 l 超过 r,最终答案为最后一次满足条件的 mid 或 l 的终值。交换操作与查找逻辑无关。

试卷来源:202606 CCF-GESP编程能力等级认证Python七级真题

本卷相关题目

在线做题 同科目题库