深耕专业教研,探索前沿技术
信息技术来源:温州市普通高中2026届高三第二次适应性考试

第 12 题

答案与解析

本题解析

参考答案

B

程序分析

i = m; j = 0
while j < i and i < len(a):
    if a[j] > a[i]:
        t = a[i]
        for k in range(i, j, -1):
            a[k] = a[k - 1]
        a[j] = t
        i += 1
    j += 1

i从m开始,j从0开始,循环比较a[j]与a[i]。当a[j] > a[i]时,先用t保存a[i],再从后往前将下标j至i-1的元素依次右移,最后把t放入下标j处。这一组操作把原a[i]插入位置j,原有元素的相对顺序保持不变。
只有发生插入时i才加1,而j每轮都加1;相等时不插入,i保持不变。循环在j到达i或i到达数组长度时结束,因此程序是否能使整个数组有序,取决于给定数据触发了哪些插入以及何时停止。

选项分析

A

可能。m=2、x=4,初始数组为[1,5,4,4,6,7]。j=0时不插入;j=1时将下标2的4插入下标1处,得到[1,4,5,4,6,7],i增至3。随后j=2,将下标3的4插入下标2处,得到[1,4,4,5,6,7],i增至4。j=3时5<6,不插入,之后j=i=4而结束,数组有序。

B

不可能。m=2、x=5,初始数组为[1,5,5,4,6,7]。j=0时1<5,不插入;j=1时5=5,仍不插入,i始终为2。随后j增至2,因j=i而结束,数组保持原状,其中5>4,不满足非递减要求。

C

可能。m=3、x=6,初始数组为[1,5,6,4,6,7]。j=1时将下标3的4插入下标1处,得到[1,4,5,6,6,7],i增至4。随后比较5与6、6与6,均不插入;j增至4后结束,数组有序。

D

可能。m=3、x=10,初始数组为[1,5,10,4,6,7]。j=1时插入4,得到[1,4,5,10,6,7],i=4;j=2时5<6,不插入。j=3时把6插到10之前,得到[1,4,5,6,10,7],i=5;j=4时再把7插到10之前,得到[1,4,5,6,7,10]。此时i=6,循环结束,数组有序。