using System;
public class Program
{
private static double findMedianOfTwoSortedArrays(int[] arr1, int[] arr2) {
int size1 = arr1.Length;
int size2 = arr2.Length;
int i = 0, j = 0;
int mid1 = -1, mid2 = -1;
if ((size2 + size1) % 2 == 1) {
for (int k = 0; k <= (size1 + size2) / 2; k++) {
if (i != size1 && j != size2) {
mid1 = (arr1[i] > arr2[j]) ? arr2[j++] : arr1[i++];
}
else if (i < size1) {
mid1 = arr1[i++];
}
else {
mid1 = arr2[j++];
}
}
return mid1;
}
else {
for (int k = 0; k <= (size1 + size2) / 2; k++) {
mid2 = mid1;
if (i != size1 && j != size2) {
mid1 = (arr1[i] > arr2[j]) ? arr2[j++] : arr1[i++];
}
else if (i < size1) {
mid1 = arr1[i++];
}
else {
mid1 = arr2[j++];
}
}
return (double)(mid1 + mid2) / 2;
}
}
public static void Main(string[] args)
{
int[] arr1 = new int[] {1, 3, 5};
int[] arr2 = new int[] {2, 4, 6};
double median = findMedianOfTwoSortedArrays(arr1, arr2);
Console.Write("Median: " + median);
}
}
/*
run:
Median: 3.5
*/