信息技术来源:浙江七校2026年普通高等学校招生全国统一考试模拟考试
第 12 题
答案与解析
本题解析
参考答案
B
解题思路
数组a按非递增顺序排列。程序每轮取区间[i,j]的中点m,再用i=m+1或j=m-1缩小区间,采用对分查找结构。与找到相等元素就结束的写法不同,本题在a[m]=key时仍向左继续查找,直到i>j。
程序分析
q = [0] * (len(a)+1)
L = R = len(a)//2
i, j = 0, len(a)-1
while i <= j:
m = (i+j)//2
if a[m] > key:
i = m+1
R += 1; q[R] = m
else:
j = m-1
L -= 1; q[L] = m
print(q[L:R+1])q初始全为0,L=R=4。当a[m]>key时,向右缩小查找区间,并先将R加1,再把下标m写到q的右侧;否则向左缩小查找区间,并先将L减1,再把m写到q的左侧。L、R由此分别标记已使用区段的左、右边界。
左右边界都在移动后才写入,因此初始位置q[4]一直保留0。最终切片包含这个0:它左侧是向左查找时记录的下标,按记录时间倒序排列;右侧是向右查找时记录的下标,按记录时间顺序排列。这里保存的是下标m,不是a[m]的值;下标0也可能被记录,要与初始保留的0区分。
选项分析
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_05_G3_zhejiangqixiao_q012
