4,008
社区成员
发帖
与我相关
我的任务
分享
'主调函数
Sub Order(obj,fun)
Dim i,j,max,temp
max=UBound(obj)
For i=0 To max
temp=obj(i)
For j=i+1 To max
If Not fun(temp,obj(j)) Then
temp=obj(j)
obj(j)=obj(i)
obj(i)=temp
End If
Next
Next
End Sub
'排序函数(升序)
Function ByAsc(n1,n2)
If n1<n2 Then
ByAsc=True
Else
ByAsc=False
End If
End Function
'排序函数(降序)
Function ByDesc(n1,n2)
If n1>n2 Then
ByDesc=True
Else
ByDesc=False
End If
End Function
'进行测试
Dim arr(5),x,str1,str2
arr(0)=3
arr(1)=8
arr(2)=3
arr(3)=7
arr(4)=5
arr(5)=1
Call Order(arr,GetRef("ByAsc"))
str1="" : str2=""
For x=0 To UBound(arr)
str1=str1&arr(x)&" "
Next
Call Order(arr,GetRef("ByDesc"))
For x=0 To UBound(arr)
str2=str2&arr(x)&" "
Next
'输出结果
MsgBox("["&str1&"]"&VbCrLf&"["&str2&"]")