Selection Sort



Option Explicit
Sub Main()
    Dim someArr, x, ArrStr
    someArr = Array(31, 25, 12, 22, 11)
    Call SelectionSort(someArr)
    For Each x In someArr
        ArrStr = ArrStr & x & ", "
    Next
    ArrStr = Left(ArrStr, Len(ArrStr) - 2)
    MsgBox "The Array after Selection Sort is : " & vbCrLf & ArrStr
End Sub
Sub SelectionSort(ByRef targetArray)
    Dim i, j, min, tmp
    For i = 0 To UBound(targetArray)
        min = i
        For j = i + 1 To UBound(targetArray)
            If targetArray(j) < targetArray(min) Then
                min = j
            End If
        Next
        tmp = targetArray(i)
        targetArray(i) = targetArray(min)
        targetArray(min) = tmp
    Next
End Sub