1.比如把5个任意不同数字按大到小排序
(54312)-->1次交换就可以达到,但我们程序中要考虑所有情况的,就是所谓的最坏打算...为了保证交换有效,肯定要做最坏打算的.(如果最坏打算都可以达到,就能满足所有情况了)
如果有N个数字排序
我们首先拿第一位置排序和其他所有位置比较,要比较N-1次.
第二个数和后面所有数字比较,比较N-2次
...
第N-1个数字和后面数比较,比较1次
第N个数字和后面所有数字比较,比较0次...(因为前面所有数字都排序好了,不用比较它就是最小的数字了)
a(N)'存在N个数字
Private Sub Form_Load()
Dim i As Long, j As Long, k As Long
Dim a() As Long
Dim N As Long
N = 10 '存在N个数字
ReDim a(N)
For i = 1 To N
a(i) = Rnd * 100 '随机赋值
Next
For i = 1 To N '第I个数字
For j = i + 1 To N ' 需要和后面的依次比较
'这里一共需要执行n(n-1)/2 次
If a(i) < a(j) Then
k = a(i)
a(i) = a(j)
a(j) = k
End If
Next
Next
For i = 1 To N
Debug.Print a(i) '输出结果查看
Next
End Sub
'这样,无论开始怎么排序,经过比较后都可以按要求排序