信息技术来源:2025学年第二学期浙江省名校协作体高三试题
第 11 题
答案与解析
本题解析
参考答案
C
解题思路
列表非递减,程序每轮取区间中点,并根据比较结果缩小区间,采用对分查找。与找到相等元素便停止的写法不同,本程序在d[m]=key时仍执行else分支,继续向右查找。
程序分析
key = int(input())
i, j = 0, len(d) - 1
while i <= j:
m = (i + j) // 2
if d[m] > key:
j = m - 1
else:
i = m + 1
print(j)i、j初始为0、9,表示待查找区间的左右端点。若d[m]>key,由于列表非递减,m及其右侧元素都大于key,令j=m-1排除这部分;否则,m及其左侧元素都不大于key,令i=m+1继续寻找更靠右的位置。
因此,i左侧已确认不大于key,j右侧已确认大于key。循环在i>j时结束,此时两端点相邻,输出的j就是最后一个不大于key的元素下标;若所有元素都大于key,则输出-1。每执行一轮while循环,查找次数增加1。
选项分析
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_03_G3_mingxiaoxiezuoti_q011
