深耕专业教研,探索前沿技术
信息技术来源:2025学年第二学期精诚联盟高三适应性联考

第 11 题

答案与解析

本题解析

参考答案

D

解题思路

程序通过两层循环反复比较相邻位置,并交换y[j]与y[j+1],采用冒泡排序的结构。本题要得到按x中元素大小排列的索引序列,因此移动的是索引列表y中的元素。

程序分析

def sort_in(x):
    n = len(x)
    y = [i for i in range(n)]
    for i in range(①):
        for j in range(②):
            if ③:
                y[j],y[j+1] = y[j+1],y[j]
    return y

y初始化为0~n-1,记录x中各元素的索引。交换后索引仍在y中,原列表x保持不变。每轮比较从左向右进行,将较大数据对应的索引逐步移到右端;后续各轮无需再处理右端已经排好的位置。

填空分析

①

n个元素最多经过n-1轮即可完成冒泡排序,因此空①填n-1。

②

第i轮开始前,右端已有i个位置排好,最右一对待比较位置为y[n-i-2]和y[n-i-1]。因此j最大取n-i-2,而range的结束值不包含在遍历范围内,空②应填n-i-1。若填n-i,第一轮会访问越界的y[n]。

③

相邻索引对应的数据分别为x[y[j]]和x[y[j+1]]。要使数据按升序排列,左侧数据较大时应交换索引;D中的>=在相等时也交换,但不改变对应数据的非递减关系。因此空③选择x[y[j]]>=x[y[j+1]],三个空共同对应D。