深耕专业教研,探索前沿技术
信息技术来源:金华十校2026年4月高三模拟考试

第 7 题

答案与解析

本题解析

参考答案

D

程序分析

输入列表a → i = 0,j = len(a) - 1 → i <= j?
Y → m=(i+j)//2 → key < a[m]?
Y → j = m - 1 → 返回i <= j?
N → i = m + 1 → 返回i <= j?
i <= j?的N分支 → 输出j

i、j初值为首、尾元素的下标,限定当前查找区间。各选项的列表均按非降序排列:若key<a[m],则m及右侧元素都大于key,令j=m-1向左查找;否则m及左侧元素都不大于key,令i=m+1向右查找。每次右移i,都把已经确定不大于key的部分留在i左侧;每次左移j,都把已经确定大于key的部分排除。结束时i=j+1,因此输出的j为最后一个不大于key的元素下标。

选项分析

A

最后一个不大于6的元素位于下标4处,输出j=4。

B

虽然列表中没有6,但下标4处的5是最后一个不大于6的元素,输出j=4。

C

最后一个不大于6的元素位于下标4处,输出j=4。

D

最后一个不大于6的元素位于下标3处,输出j=3,与其余三项不同。

解题思路

每轮取查找区间的对分点m,再根据比较结果缩小区间,这是对分查找的典型结构。本题遇到相等元素时仍向右查找,直到区间为空。