Imports System
Imports System.Threading.Interlocked
Public Class Program
Private Shared Function findMedianOfTwoSortedArrays(ByVal arr1 As Integer(), ByVal arr2 As Integer()) As Double
Dim size1 As Integer = arr1.Length
Dim size2 As Integer = arr2.Length
Dim i As Integer = 0, j As Integer = 0
Dim mid1 As Integer = -1, mid2 As Integer = -1
If (size2 + size1) Mod 2 = 1 Then
For k As Integer = 0 To (size1 + size2) / 2
If i <> size1 AndAlso j <> size2 Then
mid1 = If ((arr1(i) > arr2(j)), arr2(Math.Min(Increment(j), j - 1)), arr1(Math.Min(Increment(i), i - 1)))
ElseIf i < size1 Then
mid1 = arr1(Math.Min(Increment(i), i - 1))
Else
mid1 = arr2(Math.Min(Increment(j), j - 1))
End If
Next
Return mid1
Else
For k As Integer = 0 To (size1 + size2) / 2
mid2 = mid1
If i <> size1 AndAlso j <> size2 Then
mid1 = If ((arr1(i) > arr2(j)), arr2(Math.Min(Increment(j), j - 1)), arr1(Math.Min(Increment(i), i - 1)))
ElseIf i < size1 Then
mid1 = arr1(Math.Min(Increment(i), i - 1))
Else
mid1 = arr2(Math.Min(Increment(j), j - 1))
End If
Next
Return CDbl((mid1 + mid2)) / 2
End If
End Function
Public Shared Sub Main(ByVal args As String())
Dim arr1 As Integer() = New Integer() {1, 3, 5}
Dim arr2 As Integer() = New Integer() {2, 4, 6}
Dim median As Double = findMedianOfTwoSortedArrays(arr1, arr2)
Console.Write("Median: " & median)
End Sub
End Class
' run:
'
' Median: 3.5
'