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
'