深耕专业教研,探索前沿技术
信息技术来源:Z20+名校联盟2026届高三第三次学情诊断

第 7 题

答案与解析

本题解析

参考答案

B

程序分析

i←0,j←n-1,c←0 → i<=j?
N → 输出c
Y → m←(i+j)//2 → a[m]>key?
Y → j←m-1 → c←c+1 → 返回i<=j?
N → i←m+1 → 返回i<=j?

i、j 初值为0、n-1,分别指向查找区间的左右端点,m=(i+j)//2 为对分点下标。若 a[m]>key,就将右端点更新为 m-1,向左查找,并使 c 加1;否则将左端点更新为 m+1,向右查找。因此,c 记录向左查找的次数。与找到相等元素就结束的常见写法不同,本题 a[m]=key 时仍走N分支向右查找,直到 i>j、查找区间为空时才输出 c。

解题思路

流程图每轮取查找区间的对分点,再根据比较结果向左或向右查找,采用了对分查找的结构。

初始区间为下标 [0,7],c=0。各轮变化如下:

当前区间 m a[m] 比较与更新 c
[0,7] 3 4 4>4 不成立,i=4 0
[4,7] 5 7 7>4 成立,j=4 1
[4,4] 4 7 7>4 成立,j=3 2

此时 i=4、j=3,循环结束,输出 c=2。