深耕专业教研,探索前沿技术
信息技术来源:台州市2026届高三第二次教学质量评估试题

第 11 题

答案与解析

本题解析

参考答案

C

解题思路

程序在升序列表中取对分点,根据比较结果缩小区间,采用对分查找。本题用i==j作为返回值,需判断查找结束时两个端点的关系。

程序分析

i = 0;j = len(a)-1
while i <= j:
    m = (i+j)//2
    if a[m] == key:
        break
    elif a[m] > key:
        j = m-1
    else:
        i = m+1
return i == j

i、j从列表首尾开始,m取两者的中点。a[m]>key时,执行j=m-1,保留左半区间;a[m]<key时,执行i=m+1,保留右半区间。因此i、j是当前查找区间的左右端点。命中时直接break,端点保持不变。

若命中时区间中仍有多个元素,则i<j,返回False;区间只剩一个元素且命中时,i=j,返回True。若未找到,循环因i>j结束,也返回False。

1023=2¹⁰-1,每次排除对分点后,左右两半长度相同。未命中的路径上,区间长度依次为:

1023→511→255→127→63→31→15→7→3→1。

每次缩小均有左右两个互不重叠的后续区间,经过9次缩小,形成2⁹=512个单元素区间。用这些位置的元素作为key,恰好在i=j时命中,返回True。