信息技术来源:浙江省新阵地教育联盟2026届第二次联考技术试题卷
第 11 题
答案与解析
本题解析
参考答案
A
解题思路
列表a已有序,程序从末尾向前比较tmp与a[j],遇到比tmp大的元素继续向左查找,这是直接插入排序中插入一个元素的过程。本题需要增加列表长度,因此首次移动时还要利用append扩展列表。
程序分析
if tmp >= a[-1]:
a.append(tmp)
else:
...升序列表的末项是最大值。当tmp不小于末项时,直接追加即可保持升序;否则进入else分支,在原有元素之间寻找插入位置。
j = len(a) - 1
while j>=0 and tmp<a[j]:
if (1):
a.append(a[j])
else:
(2)
j -= 1
(3)j从原列表末项向左移动,循环只处理比tmp大的元素。已知的append语句会在列表末尾增加一个元素;其余空缺需要配合这一扩展操作,使较大元素向右让出空间,并在循环结束后完成插入。
填空分析
(1)
第一次进入循环时,j是原列表末项下标,右侧还没有可写入的位置,应通过append复制末项并扩展列表,条件为j==len(a)-1,即①。append后列表长度增加1,随后j又减1,后续各轮不再满足该条件,所以只扩展一次。
(2)
列表已经扩展后,当前a[j]仍比tmp大,应把它复制到右侧相邻位置a[j+1],为tmp腾出空间,填写a[j+1]=a[j],即③。从右向左移动可以保留尚未处理的元素。
(3)
循环结束时,若j≥0,则a[j]≤tmp,插入位置在其右侧;若j=-1,则所有原元素都比tmp大,插入位置为0。两种情况统一使用j+1,因此填写a[j+1]=tmp,即⑥。三处依次为①③⑥。
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_03_G3_xinzhendi_q011
