Imports System
Public Class MainClass
Shared Dim mBubbleSort As New CDelegateBubbleSort()
Shared Dim mElementArray As Integer() = New Integer(9) {}
Shared Sub Main(ByVal args As String())
Dim randomNumber As Random = New Random()
Dim i As Integer
Console.WriteLine("Init Value:")
' create String with 10 random numbers
For i = 0 To mElementArray.GetUpperBound(0)
mElementArray(i) = randomNumber.Next(100)
Console.WriteLine( mElementArray(i) )
Next
mBubbleSort.SortArray(mElementArray, AddressOf SortAscending)
Console.WriteLine("Sort Ascending")
For i = 0 To mElementArray.GetUpperBound(0)
Console.WriteLine( mElementArray(i) )
Next
mBubbleSort.SortArray(mElementArray, AddressOf SortDescending)
Console.WriteLine("Sort Descending")
For i = 0 To mElementArray.GetUpperBound(0)
Console.WriteLine( mElementArray(i) )
Next
End Sub
' delegate implementation sorts in asending order
Shared Private Function SortAscending(ByVal element1 As Integer, _
ByVal element2 As Integer) As Boolean
Return element1 > element2
End Function ' SortAscending
' delegate implementation sorts in descending order
Shared Private Function SortDescending(ByVal element1 As Integer, _
ByVal element2 As Integer) As Boolean
Return element1 < element2
End Function ' SortDescending
End Class
Public Class CDelegateBubbleSort
Public Delegate Function Comparator( _
ByVal element1 As Integer, _
ByVal element2 As Integer) As Boolean
Public Sub SortArray(ByVal array As Integer(), _
ByVal Compare As Comparator)
Dim i, pass As Integer
For pass = 0 To array.GetUpperBound(0)
For i = 0 To array.GetUpperBound(0) - 1
If Compare(array(i), array(i + 1)) Then
Swap(array(i), array(i + 1))
End If
Next
Next
End Sub
Private Sub Swap(ByRef firstElement As Integer, _
ByRef secondElement As Integer)
Dim hold As Integer
hold = firstElement
firstElement = secondElement
secondElement = hold
End Sub ' Swap
End Class
|