美文网首页零基础自学VBA
二十五讲VBA 排序方法之冒泡排序与选择排序

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

作者: 肉丸子豆 | 来源:发表于2017-05-07 01:23 被阅读14次

    冒泡排序

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

    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 排序方法之冒泡排序与选择排序

        本文链接:https://www.haomeiwen.com/subject/whzytxtx.html