How to move all negative elements to the end of array in VB.NET

2 Answers

0 votes
Imports System

Public Class Program
	Public Shared Sub move_negative_to_end(ByVal arr As Integer())
        Dim size As Integer = arr.Length
        Dim temp As Integer() = New Integer(size - 1) {}
        Dim j As Integer = 0

        For i As Integer = 0 To size - 1
            If arr(i) >= 0 Then temp(Math.Min(System.Threading.Interlocked.Increment(j), j - 1)) = arr(i)
        Next

        If j = size OrElse j = 0 Then Return

        For i As Integer = 0 To size - 1
            If arr(i) < 0 Then temp(Math.Min(System.Threading.Interlocked.Increment(j), j - 1)) = arr(i)
        Next

        For i As Integer = 0 To size - 1
            arr(i) = temp(i)
        Next
    End Sub

    Public Shared Sub Main()
        Dim arr As Integer() = {-1, 8, -21, -3, -2, 7, 15, -30, -40, 3, 6, 9}

        move_negative_to_end(arr)

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




' run:
'
' 8 7 15 3 6 9 -1 -21 -3 -2 -30 -40
'

 



answered Nov 3, 2021 by avibootz
0 votes
Imports System

Public Class Program
	Public Shared Sub move_negative_to_end(ByVal arr As Integer())
        Dim size As Integer = arr.Length
        Dim j As Integer = 0

        For i As Integer = 0 To size - 1
            If arr(i) >= 0 Then
                Dim tmp As Integer = arr(i)
                arr(i) = arr(j)
                arr(j) = tmp
                j += 1
            End If
        Next
    End Sub

    Public Shared Sub Main()
        Dim arr As Integer() = {-1, 8, -21, -3, -2, 7, 15, -30, -40, 3, 6, 9}
	
        move_negative_to_end(arr)

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




' run:
'
' 8 7 15 3 6 9 -21 -30 -40 -3 -2 -1
'

 



answered Nov 3, 2021 by avibootz

Related questions

1 answer 131 views
1 answer 142 views
2 answers 172 views
2 answers 162 views
2 answers 158 views
...