Imports System
Public Class Program
Private Shared Sub Swap(Of T)(ByRef a As T, ByRef b As T)
Dim temp As T = a
a = b
b = temp
End Sub
Public Shared Sub sort012Array(ByVal arr As Integer())
Dim lo As Integer = 0
Dim curr As Integer = 0
Dim hi As Integer = arr.Length - 1
While curr <= hi
Select Case arr(curr)
Case 0
Swap(arr(curr), arr(lo))
lo += 1
curr += 1
Case 1
curr += 1
Case 2
Swap(arr(hi), arr(curr))
hi -= 1
End Select
End While
End Sub
Public Shared Sub Main()
Dim arr As Integer() = New Integer() {1, 2, 2, 0, 1, 1, 0, 2, 0, 1, 0, 0, 1}
sort012Array(arr)
For i As Integer = 0 To arr.Length - 1
Console.Write(arr(i) & " ")
Next
End Sub
End Class
' run:
'
' 0 0 0 0 0 1 1 1 1 1 2 2 2
'