How to sort an array of 0s, 1s and 2s in VB.NET

1 Answer

0 votes
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
'

 



answered Apr 19, 2023 by avibootz

Related questions

1 answer 118 views
1 answer 137 views
1 answer 138 views
1 answer 139 views
2 answers 146 views
146 views asked Apr 19, 2023 by avibootz
1 answer 123 views
1 answer 127 views
...