信息技术2026年1月浙江选考
第 12 题
答案与解析
本题解析
参考答案
D
程序分析
i=1
for j in range(1,len(a)):
if a[j]<a[0]:
a[i],a[j]=a[j],a[i]
i+=1j从下标1开始向后扫描,循环中的交换只涉及下标i和j,因此a[0]始终保持初始值,作为比较的基准值。
遇到小于基准值的元素,就把它交换到下标i处,再将i加1;不小于基准值时,i不变。因此下标1至i-1逐步收集小于基准值的元素,i指向下一个收集位置。扫描结束后,下标i及其后的元素均不小于基准值。
a[0],a[i-1]=a[i-1],a[0]最后将基准值放到下标i-1。若存在较小元素,原来下标i-1处的较小元素被换到下标0;若不存在较小元素,则i=1,本次是a[0]与自身交换。因此最终基准值左侧的元素都小于它,右侧的元素都不小于它,两侧内部不一定有序。
