信息技术来源:诸暨市2026年5月高三诊断性考试
第 11 题
答案与解析
本题解析
参考答案
B
解题思路
数组a升序排列,程序取对分点并依据比较结果缩小查找区间,采用对分查找。
程序分析
a = [10,20,30,40,50,60]
i,j = 0,len(a)-1
key = int(input("请输入查找的数:"))
while i <= j:
m = (i+j)//2
if a[m] < key:
i = m + 1
else:
j = m - 1
print(m)i、j分别是当前查找区间的左右端点,m是本轮对分点的下标。原程序中,a[m]<key时令i=m+1,转向右半区间;否则令j=m-1,转向左半区间,因此相等时也向左查找。
改为a[m]<=key后,只有相等时的分支发生变化:从向左查找变为向右查找。循环在i>j时结束,print(m)输出最后一次比较的对分点下标,并不一定是key所在的位置。
以下用对分点元素值表示查找路径。key为20、40、60时,都是在只剩一个元素的区间内遇到相等值,向左或向右更新都会使区间变空;key为30时,首次比较就相等,后续仍有元素可查。
选项分析
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_05_G3_zhujimoni_q011
