二十五讲VBA 排序方法之冒泡排序与选择排序

冒泡排序

每一个数字都和它下面的所有数字进行对比,如果比他小,进行互换,如果比他大,保持不变。

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

你可能感兴趣的:(二十五讲VBA 排序方法之冒泡排序与选择排序)