手雷爆炸瞬间:求白话vb中间变量排序解释

来源:百度文库 编辑:高考问答 时间:2024/04/28 01:05:33
For i = 1 To 9
For j = i + 1 To 10
If a(i) > a(j) Then
t = a(i): a(i) = a(j): a(j) = t '交换位置
End If
Next j
Next i
t = a(i): a(i) = a(j): a(j) = t是如何实现a(i)和a(j)的交换的 为什么a(j)还要赋值给a(i)呢

Dim i as Integer
Dim j as Integer
Dim t as Integer'转换变量

For i = 1 To 9
For j = i + 1 To 10
If a(i) > a(j) Then '如果a(i)大于a(j),那么进行交换,否则不执行
t = a(i)'将a(i)赋给t,此时t的值是a(i)的值
a(i) = a(j)'将a(j)赋给a(i),此时a(i)的值是a(j)的值,原来的a(i)已经被覆盖
a(j) = '将t赋给a(j),由于t记录了a(i)未被覆盖前的值,所以现在t就是原来的a(i),然后赋给a(j),让a(j)等于原来的a(i),此时a(j)已经被t覆盖
End If
Next j
Next i

如果还是不理解就看这个例子:
a(i)=4
a(j)=1
t=0
if a(i)>a(j) then'由于a(i)=4>a(j)=1,此时进行交换
t = a(i)'此时a(i)=4,a(j)=1,t=4
a(i) = a(j)'此时a(i)=1,a(j)=1,t=4
a(j)= t'此时a(i)=1,a(j)=4,t=4
end if