VBA冒泡排序,编程基础必学课
冒泡排序是经常用到的一种数据排列方法,本节将介绍如何利用VBA代码来实现其功能。
其中,可查看示例进行学习代码的过程。
首先,对冒泡排序有一个简单的了解。
冒泡排序可以理解成,水里的气泡向上移动,最终排序的结果就是,最大的数据排在最后,最小的数据排在第一位,也就是从小到大排列。
直观点,可以看如下动图。
下面为示例,对一列无序数据进行排列,最后实现从小到大的顺序。
工作当中的应用实际上也有很多,各类数据排序。
下面重点看一下代码:
Private Sub MaoPao()
"冒泡排序
Dim xArr(), x As Variant
Dim r As Range, ri As Integer
Set r = Range("B3:B11") "定义排序范围
ReDim xArr(r.Count - 1) "定义存放数组
For ri = 1 To r.Count "数组赋值
xArr(ri - 1) = r.Item(ri).Value
Next ri
Dim i As Integer, j As Integer
"外循环排序
For i = UBound(xArr) - 1 To 0 Step -1
For j = 0 To i "二层循环排序
If xArr(j) >= xArr(j + 1) Then "如果前一个大于等于后一个
x = xArr(j + 1) "交换位置
xArr(j + 1) = xArr(j)
xArr(j) = x
End If
Next j
Next i
"单元格赋值
For i = 0 To UBound(xArr)
r.Item(i + 1).Offset(0, 1).Value = xArr(i)
Next i
Set r = Nothing
Erase xArr
End Sub
主要代码做了注释,可以对照学习。
重点是整个排序的逻辑流程要进行梳理。
代码中应用了两层嵌套循环,第一层为对所有数据进行遍历。第二层为排序递减,也就是说每进行一次排序分别把最大的数据向后保存,下一次就不对此数据进行比较了。
如果,实在弄不明白,可以直接拿代码应用,只需要修改一下”定义排序范围“和保存位置,就可以使用了。
欢迎关注、收藏
---END---