对某数组a中的n个元素随机赋0、1或2这三种值之一,现按如下算法对数组a从小到大升序排序,设置两个变量:Left记录第一个1的位置,其左侧全是0,Right记录第一个2的前一位置,其右侧全是2。使用i从头到尾查询一遍,根据a(i)的值决定其是否与a(Left)或a(Right)交换,直至i与Right相遇。
left = 1: right = n: i = 1
Do While i <= right
If a(i) = 0 Then
tmp = a(left): a(left) = a(i): a(i) = tmp
left = left + 1
i = i + 1
ElseIf a(i) = 1 Then
i = i + 1
Else
End If
Loop
要实现上述排序算法思想,则横线处代码应该是( )
A . tmp=a(i):a(i)=a(right):a(right)=tmp: right =right -1
B . tmp=a(i):a(i)=a(right):a(right)=tmp: right =right-1:i=i+1
C . i=i-1
D . right=right-1:i=i-1
答案:A