信息技术来源: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 yy初始化为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。
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_05_G3_jingchenglianmeng_q011
