冒泡排序
每一个数字都和它下面的所有数字进行对比,如果比他小,进行互换,如果比他大,保持不变。
Sub 冒泡排序演示()
Dim arr, temp, x, y, t, k
arr = Range("a1:a10")
For x = 1 To UBound(arr) - 1
For y = x + 1 To UBound(arr)
If arr(x, 1) > arr(y, 1) Then
temp = arr(x, 1)
arr(x, 1) = arr(y, 1)
arr(y, 1) = temp
End If
Next y
Next x
Range("b3").Resize(x) = ""
Range("b3").Resize(x) = arr
End Sub
选择排序
选择排序法的循环是从下往上循环,每个数字和它以上的所有数字的最大值进行互换,这个方法要比冒泡排序法快一些,不需要逐个互换,只和最大值进行互换。
Sub 选择排序()
Dim arr, temp, x, y, t, imax, k, k1, k2
t = Timer
arr = Range("a1:a10")
For x = UBound(arr) To 1 + 1 Step -1
imax = 1 '最大的索引,先假设最大值所在的位置为1
For y = 1 To x
If arr(y, 1) > arr(imax, 1) Then imax = y '找到最大值在哪一行
Next y
temp = arr(imax, 1)
arr(imax, 1) = arr(x, 1)
arr(x, 1) = temp
Next x
Range("c3").Resize(UBound(arr)) = arr
End Sub
网友评论