深耕专业教研,探索前沿技术
信息技术来源:2025学年第二学期天域全国名校协作体高三4月联考

第 11 题

答案与解析

本题解析

参考答案

B

解题思路

程序每轮暂存一个元素k,将右侧已排好序的元素依次移动,再把k插入空出的位置,属于插入排序。这里从右向左扩大有序区,比较的关键字是元素除以5的余数。

程序分析

n=len(a)
for i in range(n-2,-1,-1):
    k=a[i]
    j=i+1
    while j<=n-1 and a[j]%5>k%5:
        a[j-1]=a[j]
        j+=1
    a[j-1]=k

i从n-2递减到0,最初右侧有序区只有末尾一个元素。每轮用k暂存a[i],并从右侧有序区的第一个位置i+1开始查找插入位置。

当a[j]%5>k%5时,将a[j]左移到a[j-1],再令j增加1。这样,余数比k大的元素被依次放到k前面,空位随之向右移动。遇到余数不大于k的元素,或j越过数组末尾时,循环结束,把k放入a[j-1]。

本轮结束后,a[i]至a[n-1]按余数从大到小排列;随着i向左推进,有序区逐步扩大到整个列表。余数相等时不移动,因此相等关键字的元素保持原有相对次序。

选项分析

A

不可能。各元素除以5的余数为0、1、2、2、3、4,按非降序排列,不符合程序要求的非升序。

B

可能。余数依次为3、3、2、2、1、0,满足非升序;若初始列表就是该列表,运行后保持不变。

C

不可能。余数依次为4、4、3、2、2、4,末尾的4出现在2之后,不符合非升序。

D

不可能。余数依次为4、3、1、1、2、0,其中2出现在1之后,不符合非升序。