信息技术来源:Z20+名校联盟2026届高三第三次学情诊断
第 11 题
答案与解析
本题解析
参考答案
D
解题思路
列表原来已升序排列,只将 d[pos] 减 2,因此该元素只可能需要向左调整。程序从 pos-1 开始向左比较,并通过相邻交换移动元素,这是插入排序中将一个元素插入前面有序区间的过程。
程序分析
j=pos-1
while j>=0:
if :
break
d[j],d[j+1]=d[j+1],d[j]
j-=1按题意,进入这段调整程序前,d[pos] 已减 2。j 初值为 pos-1,第一轮中待调整元素位于 j+1。若没有执行 break,相邻交换将该元素移到下标 j,再执行 j-=1,下一轮它仍位于新的 j+1。因此,每轮比较对象应是左侧元素 d[j] 与当前待调整元素 d[j+1]。交换后 d[pos] 的值可能改变,不能一直用固定下标 pos 跟踪待调整元素。
填空分析
加框处
空缺条件成立时直接 break,所以这里填写的是停止调整的条件。若 d[j]>d[j+1],左右两元素逆序,必须继续交换;若 d[j]<d[j+1],由于更左侧的元素都不大于 d[j],待调整元素已到达合适位置,可以结束。因此应填 d[j]<d[j+1]。
两者相等时,该条件不成立,程序会交换两个相等值并继续向左检查,但不会破坏升序;到达合适位置或 j=-1 时仍会结束。
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_05_G3_Z20_q011
