|
Option Explicit
Sub 工作表排序之冒泡法()
Dim arr, x, y, tem
arr = Range("a1:a" & [a65535].End(xlUp).Row)
For x = 1 To UBound(arr) - 1
For y = x + 1 To UBound(arr)
If arr(x, 1) > arr(y, 1) Then
tem = arr(y, 1)
arr(y, 1) = arr(x, 1)
arr(x, 1) = tem
End If
Next y
Next x
Range("a1").Resize(UBound(arr), 1) = arr
End Sub
Sub 工作表排序之选择法()
Dim arr, x, y, tem, imax
arr = Range("a1:a" & [a65535].End(xlUp).Row)
For x = UBound(arr) To LBound(arr) + 1 Step -1
imax = 1
For y = LBound(arr) To x
If arr(y, 1) > arr(imax, 1) Then
imax = y
End If
Next y
tem = arr(imax, 1)
arr(imax, 1) = arr(x, 1)
arr(x, 1) = tem
Next x
Range("a1").Resize(UBound(arr), 1) = arr
End Sub
Sub 工作表排序之插入法()
Dim arr, x, y, tem
arr = Range("a1:a" & [a65535].End(xlUp).Row)
For x = 2 To UBound(arr)
tem = arr(x, 1)
For y = x - 1 To LBound(arr) Step -1
If tem >= arr(y, 1) Then Exit For
arr(y + 1, 1) = arr(y, 1)
Next y
arr(y + 1, 1) = tem
Next x
Range("a1").Resize(UBound(arr), 1) = arr
End Sub
Sub 打乱顺序()
Dim arr, x, num, h
arr = Range("a1:a" & Range("a65535").End(xlUp).Row)
For x = 1 To UBound(arr)
num = Int((UBound(arr) - LBound(arr) + 1) * Rnd() + LBound(arr))
h = arr(num, 1)
arr(num, 1) = arr(x, 1)
arr(x, 1) = h
Next x
Range("a1").Resize(UBound(arr), 1) = arr
End Sub
|
|