How to sort an array of 0, 1 and 2 values with while loop and select case in VB.NET

1 Answer

0 votes
Imports System

Public Class Test
    Public Shared Sub swap(arr() As Integer, i As Integer, j As Integer)
       Dim tmp As Integer
       
       tmp = arr(i)
       arr(i) = arr(j)
       arr(j) = tmp
    End Sub
    
    Public Shared Sub sort(arr() as Integer) 
        Dim start As Integer = 0
        Dim endd As Integer = arr.Length - 1
        Dim midd As Integer = 0
        Dim tmp As Integer
           
        Do While midd <= endd 
            Select Case arr(midd) 
                Case 0  
                    swap(arr, start, midd)
                    start += 1
                    midd += 1
                Case 1 
                    midd += 1
                Case 2
                    swap(arr, midd, endd)
                    endd -= 1 
            End Select
        Loop
    End Sub
    
    Public Shared Sub Main()
        Dim arr() As Integer = {2, 1, 0, 0, 1, 2, 2, 1, 1, 2}
	
	    sort(arr) 

        For i As Integer = 0 To arr.Length - 1
            Console.Write("{0} ", arr(i))
        Next
    End Sub
End Class



' run
' 
' 0 0 1 1 1 1 2 2 2 2 

 



answered May 1, 2019 by avibootz
...