Public Function [B]Maximum[/B](ParamArray Values() As Variant) As Variant
Dim Index As Long
Maximum = Values(0)
For Index = 1 To UBound(Values)
If Values(Index) > Maximum Then Maximum = Values(Index)
Next
End Function
MsgBox [B]Maximum[/B](0.3, Sin(1), Log(2))
MsgBox [B]Maximum[/B](A, B, C, D)
Public Function [B]MaximumArray[/B](ByRef Values As Variant) As Variant
Dim Index As Long
MaximumArray = Values(LBound(Values))
For Index = LBound(Values) + 1 To UBound(Values)
If Values(Index) > MaximumArray Then MaximumArray = Values(Index)
Next
End Function
Dim List(1 To 100) As Long
MsgBox [B]MaximumArray[/B](List)
Public Sub [B]QuickSort[/B](ByRef List As Variant, ByVal First As Long, ByVal Last As Long)
Dim LeftIndex As Long, RightIndex As Long, BaseItem As Variant, TempItem As Variant
If Last > First Then
LeftIndex = First
RightIndex = Last + 1
BaseItem = List(First)
Do
Do
LeftIndex = LeftIndex + 1
Loop While List(LeftIndex) < BaseItem And LeftIndex < Last
Do
RightIndex = RightIndex - 1
Loop While List(RightIndex) > BaseItem And RightIndex > First
If LeftIndex < RightIndex Then
TempItem = List(LeftIndex)
List(LeftIndex) = List(RightIndex)
List(RightIndex) = TempItem
Else
Exit Do
End If
Loop
TempItem = List(First)
List(First) = List(RightIndex)
List(RightIndex) = TempItem
QuickSort List, First, RightIndex - 1
QuickSort List, RightIndex + 1, Last
End If
End Sub
Dim List(1001 To 1100) As Double
[B]QuickSort[/B] List, 1001, 1100