Imports System
Imports System.Threading.Interlocked
Public Class Program
Public Shared Sub ArrangeEvenOdd(ByVal arr As Integer())
Dim left As Integer = 0
Dim right As Integer = arr.Length - 1
While left < right
If (arr(left) Mod 2) <> 0 Then
While (arr(right) Mod 2 = 1) AndAlso right > left
right -= 1
End While
Dim tmp As Integer = arr(left)
arr(Math.Min(Increment(left), left - 1)) = arr(right)
arr(Math.Max(Decrement(right), right + 1)) = tmp
Else
left += 1
End If
End While
End Sub
Public Shared Sub Main(ByVal args As String())
Dim arr As Integer() = New Integer() {3, 4, 2, 9, 4, 8, 5, 6}
ArrangeEvenOdd(arr)
For Each n As Integer In arr
Console.Write(n & " ")
Next
End Sub
End Class
' run:
'
' 6 4 2 8 4 9 5 3
'