# Find median of two sorted arrays

Here given code implementation process.

``````// C Program
// Find median of two sorted arrays
#include <stdio.h>

//Function which is display array elements
void display(int arr[], int size)
{
for (int i = 0; i < size; ++i)
{
printf("%d ", arr[i]);
}
printf("\n");
}

void median(int arr1[],int arr2[],int s1,int s2)
{

int total_size = s1 + s2 ;

//This two variables indicate index of arr1 and arr2
int first = 0;

int second = 0;

//This variable are used to control loop
int counter = 0;

//This variables are used to store result
int result = 0;
int temp = 0;

while(counter <= total_size/2)
{
//Get current calculated result
temp = result;

if(first < s1 && second <s2)
{
//When both array elemement exist

if(arr1[first]<arr2[second])
{
//When first array element are small
result = arr1[first];
first++;
}
else
{
//When second array element are small
result = arr2[second];
second++;
}
}
else if(first < s1)
{
result = arr1[first];
first++;
}
else
{
result = arr2[second];
second++;
}
counter++;
}
printf(" First Array : ");
display(arr1,s1);
printf(" Second Array : ");
display(arr2,s2);
if(total_size % 2 != 0)
{
//only one middle element are possible
printf(" Median : %d \n\n",result);
}
else
{
//when two middle elements are possible
printf(" Median Elements [%d %d]  \n",result,temp);

result = (result + temp) /2 ;

printf(" Median : %d \n\n",result);

}

}

int main()
{
//When provide similar size of array elements
int a1[] = {1, 2, 10};
int a2[] = {4, 15, 16};

//Get the size of array
int s1 = sizeof(a1) / sizeof(a1[0]);
int s2 = sizeof(a2) / sizeof(a2[0]);

median(a1,a2,s1,s2);

//When given
int a3[] = {3,11,14};
int a4[] = {6, 7, 22, 24};
//Get the size of array
s1 = sizeof(a3) / sizeof(a3[0]);
s2 = sizeof(a4) / sizeof(a4[0]);

median(a3,a4,s1,s2);

int a6[] = {-3,5,8,9};
int a7[] = {-6,-5,-3,-1,9,13};

//Get the size of array
s1 = sizeof(a6) / sizeof(a6[0]);
s2 = sizeof(a7) / sizeof(a7[0]);

median(a6,a7,s1,s2);

return 0;
}``````

#### Output

`````` First Array : 1 2 10
Second Array : 4 15 16
Median Elements [10 4]
Median : 7

First Array : 3 11 14
Second Array : 6 7 22 24
Median : 11

First Array : -3 5 8 9
Second Array : -6 -5 -3 -1 9 13
Median Elements [5 -1]
Median : 2
``````
``````// Java Program
// Find median of two sorted arrays

class MyArray
{

//Function which is display array elements
public void display(int[] arr, int size)
{
for (int i = 0; i < size; ++i)
{
System.out.print(" " + arr[i] );
}
System.out.print("\n");
}
//Find the median of given two sorted arrays
public void median(int[] arr1, int[] arr2)
{
//Get the size of array
int s1 = arr1.length;
int s2 = arr2.length;

//This two variables indicate index of arr1 and arr2
int first = 0;
int second = 0;
//This variable are used to control loop
int counter = 0;
//This variables are used to store result
int result = 0;
int temp = 0;

//Calculating median of given two sorted arrays
while (counter <= (s1+s2) / 2)
{
//Get current calculated result
temp = result;
if (first < s1 && second < s2)
{
//When both array elemement exist
if (arr1[first] < arr2[second])
{
//When first array element are small
result = arr1[first];
first++;
}
else
{
//When second array element are small
result = arr2[second];
second++;
}
}
else if (first < s1)
{
result = arr1[first];
first++;
}
else
{
result = arr2[second];
second++;
}
counter++;
}

System.out.print(" First Array : ");
display(arr1, s1);
System.out.print(" Second Array : ");
display(arr2, s2);

if ((s1+s2) % 2 != 0)
{
System.out.print(" Median : " + result + " \n\n");
}
else
{
System.out.print(" Median Elements [" + result + " " + temp + "] \n");
result = (result + temp) / 2;
System.out.print(" Median : " + result + " \n\n");
}
}
public static void main(String[] args)
{
MyArray obj = new MyArray();
//When provide similar size of array elements
int[] a1 = {1 , 2 , 10};
int[] a2 = {4 , 15 , 16};

obj.median(a1, a2);
//When given
int[] a3 =  { 3 , 11 , 14 };
int[] a4 =  { 6 , 7 , 22 , 24 };

obj.median(a3, a4);

int[] a6 = {-3 , 5 , 8 , 9};
int[] a7 =  {-6 , -5 , -3 , -1 , 9 , 13};

obj.median(a6, a7);
}
}``````

#### Output

`````` First Array :  1 2 10
Second Array :  4 15 16
Median Elements [10 4]
Median : 7

First Array :  3 11 14
Second Array :  6 7 22 24
Median : 11

First Array :  -3 5 8 9
Second Array :  -6 -5 -3 -1 9 13
Median Elements [5 -1]
Median : 2
``````
``````//Include header file
#include <iostream>

using namespace std;
// C++ Program
// Find median of two sorted arrays
class MyArray
{
public:
//Function which is display array elements
void display(int arr[], int size)
{
for (int i = 0; i < size; ++i)
{
cout << " " << arr[i];
}
cout << "\n";
}
//Find the median of given two sorted arrays
void median(int arr1[], int arr2[],int s1,int s2)
{

//This two variables indicate index of arr1 and arr2
int first = 0;
int second = 0;
//This variable are used to control loop
int counter = 0;
//This variables are used to store result
int result = 0;
int temp = 0;
//Calculating median of given two sorted arrays
while (counter <= (s1 + s2) / 2)
{
//Get current calculated result
temp = result;
if (first < s1 && second < s2)
{
//When both array elemement exist
if (arr1[first] < arr2[second])
{
//When first array element are small
result = arr1[first];
first++;
}
else
{
//When second array element are small
result = arr2[second];
second++;
}
}
else if (first < s1)
{
result = arr1[first];
first++;
}
else
{
result = arr2[second];
second++;
}
counter++;
}
cout << " First Array : ";
this->display(arr1, s1);
cout << " Second Array : ";
this->display(arr2, s2);
if ((s1 + s2) % 2 != 0)
{
cout << " Median : " << result << " \n\n";
}
else
{
cout << " Median Elements [" << result << " " << temp << "] \n";
result = (result + temp) / 2;
cout << " Median : " << result << " \n\n";
}
}
};
int main()
{
MyArray obj = MyArray();
//When provide similar size of array elements
int a1[] = {1, 2, 10};
int a2[] = {4, 15, 16};

//Get the size of array
int s1 = sizeof(a1) / sizeof(a1[0]);
int s2 = sizeof(a2) / sizeof(a2[0]);

obj.median(a1,a2,s1,s2);

//When given
int a3[] = {3,11,14};
int a4[] = {6, 7, 22, 24};
//Get the size of array
s1 = sizeof(a3) / sizeof(a3[0]);
s2 = sizeof(a4) / sizeof(a4[0]);

obj.median(a3,a4,s1,s2);

int a6[] = {-3,5,8,9};
int a7[] = {-6,-5,-3,-1,9,13};

//Get the size of array
s1 = sizeof(a6) / sizeof(a6[0]);
s2 = sizeof(a7) / sizeof(a7[0]);

obj.median(a6,a7,s1,s2);

return 0;
}``````

#### Output

`````` First Array :  1 2 10
Second Array :  4 15 16
Median Elements [10 4]
Median : 7

First Array :  3 11 14
Second Array :  6 7 22 24
Median : 11

First Array :  -3 5 8 9
Second Array :  -6 -5 -3 -1 9 13
Median Elements [5 -1]
Median : 2
``````
``````//Include namespace system
using System;
// C# Program
// Find median of two sorted arrays
class MyArray
{
//Function which is display array elements
public void display(int[] arr, int size)
{
for (int i = 0; i < size; ++i)
{
Console.Write(" " + arr[i]);
}
Console.Write("\n");
}
//Find the median of given two sorted arrays
public void median(int[] arr1, int[] arr2)
{
//Get the size of array
int s1 = arr1.Length;
int s2 = arr2.Length;
//This two variables indicate index of arr1 and arr2
int first = 0;
int second = 0;
//This variable are used to control loop
int counter = 0;
//This variables are used to store result
int result = 0;
int temp = 0;
//Calculating median of given two sorted arrays
while (counter <= (s1 + s2) / 2)
{
//Get current calculated result
temp = result;
if (first < s1 && second < s2)
{
//When both array elemement exist
if (arr1[first] < arr2[second])
{
//When first array element are small
result = arr1[first];
first++;
}
else
{
//When second array element are small
result = arr2[second];
second++;
}
}
else if (first < s1)
{
result = arr1[first];
first++;
}
else
{
result = arr2[second];
second++;
}
counter++;
}
Console.Write(" First Array : ");
display(arr1, s1);
Console.Write(" Second Array : ");
display(arr2, s2);
if ((s1 + s2) % 2 != 0)
{
Console.Write(" Median : " + result + " \n\n");
}
else
{
Console.Write(" Median Elements [" + result + " " + temp + "] \n");
result = (result + temp) / 2;
Console.Write(" Median : " + result + " \n\n");
}
}
public static void Main(String[] args)
{
MyArray obj = new MyArray();
int[] a1 = {
1 , 2 , 10
};
int[] a2 = {
4 , 15 , 16
};
obj.median(a1, a2);
int[] a3 = {
3 , 11 , 14
};
int[] a4 = {
6 , 7 , 22 , 24
};
obj.median(a3, a4);
int[] a6 = {
-3 , 5 , 8 , 9
};
int[] a7 = {
-6 , -5 , -3 , -1 , 9 , 13
};
obj.median(a6, a7);
}
}``````

#### Output

`````` First Array :  1 2 10
Second Array :  4 15 16
Median Elements [10 4]
Median : 7

First Array :  3 11 14
Second Array :  6 7 22 24
Median : 11

First Array :  -3 5 8 9
Second Array :  -6 -5 -3 -1 9 13
Median Elements [5 -1]
Median : 2
``````
``````<?php
// Php Program
// Find median of two sorted arrays
class MyArray
{
//Function which is display array elements
public	function display( \$arr, \$size)
{
for (\$i = 0; \$i < \$size; ++\$i)
{
echo " ". \$arr[\$i];
}
echo "\n";
}
//Find the median of given two sorted arrays
public	function median( \$arr1, & \$arr2)
{
//Get the size of array
\$s1 = count(\$arr1);
\$s2 = count(\$arr2);
//This two variables indicate index of arr1 and arr2
\$first = 0;
\$second = 0;
//This variable are used to control loop
\$counter = 0;
//This variables are used to store result
\$result = 0;
\$temp = 0;
//Calculating median of given two sorted arrays
while (\$counter <= intval((\$s1 + \$s2) / 2))
{
//Get current calculated result
\$temp = \$result;
if (\$first < \$s1 && \$second < \$s2)
{
//When both array elemement exist
if (\$arr1[\$first] < \$arr2[\$second])
{
//When first array element are small
\$result = \$arr1[\$first];
\$first++;
}
else
{
//When second array element are small
\$result = \$arr2[\$second];
\$second++;
}
}
else if (\$first < \$s1)
{
\$result = \$arr1[\$first];
\$first++;
}
else
{
\$result = \$arr2[\$second];
\$second++;
}
\$counter++;
}
echo " First Array : ";
\$this->display(\$arr1, \$s1);
echo " Second Array : ";
\$this->display(\$arr2, \$s2);
if ((\$s1 + \$s2) % 2 != 0)
{
echo " Median : ". \$result ." \n\n";
}
else
{
echo " Median Elements [". \$result ." ". \$temp ."] \n";
\$result = intval((\$result + \$temp) / 2);
echo " Median : ". \$result ." \n\n";
}
}
}

function main()
{
\$obj = new MyArray();
//When provide similar size of array elements
\$a1 = array(1, 2, 10);
\$a2 = array(4, 15, 16);
\$obj->median(\$a1, \$a2);
//When given
\$a3 = array(3, 11, 14);
\$a4 = array(6, 7, 22, 24);
\$obj->median(\$a3, \$a4);
\$a6 = array(-3, 5, 8, 9);
\$a7 = array(-6, -5, -3, -1, 9, 13);
\$obj->median(\$a6, \$a7);
}
main();``````

#### Output

`````` First Array :  1 2 10
Second Array :  4 15 16
Median Elements [10 4]
Median : 7

First Array :  3 11 14
Second Array :  6 7 22 24
Median : 11

First Array :  -3 5 8 9
Second Array :  -6 -5 -3 -1 9 13
Median Elements [5 -1]
Median : 2
``````
``````// Node Js Program
// Find median of two sorted arrays
class MyArray
{
//Function which is display array elements
display(arr, size)
{
for (var i = 0; i < size; ++i)
{
process.stdout.write(" " + arr[i]);
}
process.stdout.write("\n");
}
//Find the median of given two sorted arrays
median(arr1, arr2)
{
//Get the size of array
var s1 = arr1.length;
var s2 = arr2.length;
//This two variables indicate index of arr1 and arr2
var first = 0;
var second = 0;
//This variable are used to control loop
var counter = 0;
//This variables are used to store result
var result = 0;
var temp = 0;
//Calculating median of given two sorted arrays
while (counter <= parseInt((s1 + s2) / 2))
{
//Get current calculated result
temp = result;
if (first < s1 && second < s2)
{
//When both array elemement exist
if (arr1[first] < arr2[second])
{
//When first array element are small
result = arr1[first];
first++;
}
else
{
//When second array element are small
result = arr2[second];
second++;
}
}
else if (first < s1)
{
result = arr1[first];
first++;
}
else
{
result = arr2[second];
second++;
}
counter++;
}
process.stdout.write(" First Array : ");
this.display(arr1, s1);
process.stdout.write(" Second Array : ");
this.display(arr2, s2);
if ((s1 + s2) % 2 != 0)
{
process.stdout.write(" Median : " + result + " \n\n");
}
else
{
process.stdout.write(" Median Elements [" + result + " " + temp + "] \n");
result = parseInt((result + temp) / 2);
process.stdout.write(" Median : " + result + " \n\n");
}
}
}

function main()
{
var obj = new MyArray();
//When provide similar size of array elements
var a1 = [1, 2, 10];
var a2 = [4, 15, 16];
obj.median(a1, a2);
//When given
var a3 = [3, 11, 14];
var a4 = [6, 7, 22, 24];
obj.median(a3, a4);
var a6 = [-3, 5, 8, 9];
var a7 = [-6, -5, -3, -1, 9, 13];
obj.median(a6, a7);
}
main();``````

#### Output

`````` First Array :  1 2 10
Second Array :  4 15 16
Median Elements [10 4]
Median : 7

First Array :  3 11 14
Second Array :  6 7 22 24
Median : 11

First Array :  -3 5 8 9
Second Array :  -6 -5 -3 -1 9 13
Median Elements [5 -1]
Median : 2
``````
``````#  Python 3 Program
#  Find median of two sorted arrays
class MyArray :
# Function which is display array elements
def display(self, arr, size) :
i = 0
while (i < size) :
print(" ", arr[i], end = "")
i += 1

print("\n", end = "")

# Find the median of given two sorted arrays
def median(self, arr1, arr2) :
# Get the size of array
s1 = len(arr1)
s2 = len(arr2)
# This two variables indicate index of arr1 and arr2
first = 0
second = 0
# This variable are used to control loop
counter = 0
# This variables are used to store result
result = 0
temp = 0
# Calculating median of given two sorted arrays
while (counter <= int((s1 + s2) / 2)) :
# Get current calculated result
temp = result
if (first < s1 and second < s2) :
# When both array elemement exist
if (arr1[first] < arr2[second]) :
# When first array element are small
result = arr1[first]
first += 1
else :
# When second array element are small
result = arr2[second]
second += 1

elif(first < s1) :
result = arr1[first]
first += 1
else :
result = arr2[second]
second += 1

counter += 1

print(" First Array : ", end = "")
self.display(arr1, s1)
print(" Second Array : ", end = "")
self.display(arr2, s2)
if ((s1 + s2) % 2 != 0) :
print(" Median : ", result ," \n\n", end = "")
else :
print(" Median Elements [", result ," ", temp ,"] \n", end = "")
result = int((result + temp) / 2)
print(" Median : ", result ," \n\n", end = "")

def main() :
obj = MyArray()
# When provide similar size of array elements
a1 = [1, 2, 10]
a2 = [4, 15, 16]
obj.median(a1, a2)
# When given
a3 = [3, 11, 14]
a4 = [6, 7, 22, 24]
obj.median(a3, a4)
a6 = [-3, 5, 8, 9]
a7 = [-6, -5, -3, -1, 9, 13]
obj.median(a6, a7)

if __name__ == "__main__": main()``````

#### Output

`````` First Array :   1  2  10
Second Array :   4  15  16
Median Elements [ 10   4 ]
Median :  7

First Array :   3  11  14
Second Array :   6  7  22  24
Median :  11

First Array :   -3  5  8  9
Second Array :   -6  -5  -3  -1  9  13
Median Elements [ 5   -1 ]
Median :  2
``````
``````#  Ruby Program
#  Find median of two sorted arrays
class MyArray

# Function which is display array elements
def display(arr, size)

i = 0
while (i < size)

print(" ", arr[i])
i += 1
end
print("\n")
end
# Find the median of given two sorted arrays
def median(arr1, arr2)

# Get the size of array
s1 = arr1.length
s2 = arr2.length
# This two variables indicate index of arr1 and arr2
first = 0
second = 0
# This variable are used to control loop
counter = 0
# This variables are used to store result
result = 0
temp = 0
# Calculating median of given two sorted arrays
while (counter <= (s1 + s2) / 2)

# Get current calculated result
temp = result
if (first < s1 && second < s2)

# When both array elemement exist
if (arr1[first] < arr2[second])

# When first array element are small
result = arr1[first]
first += 1
else

# When second array element are small
result = arr2[second]
second += 1
end
elsif(first < s1)

result = arr1[first]
first += 1
else

result = arr2[second]
second += 1
end
counter += 1
end
print(" First Array : ")
self.display(arr1, s1)
print(" Second Array : ")
self.display(arr2, s2)
if ((s1 + s2) % 2 != 0)

print(" Median : ", result ," \n\n")
else

print(" Median Elements [", result ," ", temp ,"] \n")
result = (result + temp) / 2
print(" Median : ", result ," \n\n")
end
end
end
def main()

obj = MyArray.new()
# When provide similar size of array elements
a1 = [1, 2, 10]
a2 = [4, 15, 16]
obj.median(a1, a2)
# When given
a3 = [3, 11, 14]
a4 = [6, 7, 22, 24]
obj.median(a3, a4)
a6 = [-3, 5, 8, 9]
a7 = [-6, -5, -3, -1, 9, 13]
obj.median(a6, a7)
end
main()``````

#### Output

`````` First Array :  1 2 10
Second Array :  4 15 16
Median Elements [10 4]
Median : 7

First Array :  3 11 14
Second Array :  6 7 22 24
Median : 11

First Array :  -3 5 8 9
Second Array :  -6 -5 -3 -1 9 13
Median Elements [5 -1]
Median : 2

``````
``````// Scala Program
// Find median of two sorted arrays
class MyArray
{
//Function which is display array elements
def display(arr: Array[Int], size: Int): Unit = {
var i: Int = 0;
while (i < size)
{
print(" " + arr(i));
i += 1;
}
print("\n");
}
//Find the median of given two sorted arrays
def median(arr1: Array[Int], arr2: Array[Int]): Unit = {
//Get the size of array
var s1: Int = arr1.length;
var s2: Int = arr2.length;
//This two variables indicate index of arr1 and arr2
var first: Int = 0;
var second: Int = 0;
//This variable are used to control loop
var counter: Int = 0;
//This variables are used to store result
var result: Int = 0;
var temp: Int = 0;
//Calculating median of given two sorted arrays
while (counter <= ((s1 + s2) / 2).toInt)
{
//Get current calculated result
temp = result;
if (first < s1 && second < s2)
{
//When both array elemement exist
if (arr1(first) < arr2(second))
{
//When first array element are small
result = arr1(first);
first += 1;
}
else
{
//When second array element are small
result = arr2(second);
second += 1;
}
}
else if (first < s1)
{
result = arr1(first);
first += 1;
}
else
{
result = arr2(second);
second += 1;
}
counter += 1;
}
print(" First Array : ");
display(arr1, s1);
print(" Second Array : ");
display(arr2, s2);
if ((s1 + s2) % 2 != 0)
{
print(" Median : " + result + " \n\n");
}
else
{
print(" Median Elements [" + result + " " + temp + "] \n");
result = ((result + temp) / 2).toInt;
print(" Median : " + result + " \n\n");
}
}
}
object Main
{
def main(args: Array[String]): Unit = {
var obj: MyArray = new MyArray();
//When provide similar size of array elements
var a1: Array[Int] = Array(1, 2, 10);
var a2: Array[Int] = Array(4, 15, 16);
obj.median(a1, a2);
//When given
var a3: Array[Int] = Array(3, 11, 14);
var a4: Array[Int] = Array(6, 7, 22, 24);
obj.median(a3, a4);
var a6: Array[Int] = Array(-3, 5, 8, 9);
var a7: Array[Int] = Array(-6, -5, -3, -1, 9, 13);
obj.median(a6, a7);
}
}``````

#### Output

`````` First Array :  1 2 10
Second Array :  4 15 16
Median Elements [10 4]
Median : 7

First Array :  3 11 14
Second Array :  6 7 22 24
Median : 11

First Array :  -3 5 8 9
Second Array :  -6 -5 -3 -1 9 13
Median Elements [5 -1]
Median : 2
``````
``````// Swift Program
// Find median of two sorted arrays
class MyArray
{
//Function which is display array elements
func display(_ arr: [Int], _ size: Int)
{
var i: Int = 0;
while (i < size)
{
print(" ", arr[i], terminator: "");
i += 1;
}
print("\n", terminator: "");
}
//Find the median of given two sorted arrays
func median(_ arr1: [Int], _ arr2: [Int])
{
//Get the size of array
let s1: Int = arr1.count;
let s2: Int = arr2.count;
//This two variables indicate index of arr1 and arr2
var first: Int = 0;
var second: Int = 0;
//This variable are used to control loop
var counter: Int = 0;
//This variables are used to store result
var result: Int = 0;
var temp: Int = 0;
//Calculating median of given two sorted arrays
while (counter <= (s1 + s2) / 2)
{
//Get current calculated result
temp = result;
if (first < s1 && second < s2)
{
//When both array elemement exist
if (arr1[first] < arr2[second])
{
//When first array element are small
result = arr1[first];
first += 1;
}
else
{
//When second array element are small
result = arr2[second];
second += 1;
}
}
else if (first < s1)
{
result = arr1[first];
first += 1;
}
else
{
result = arr2[second];
second += 1;
}
counter += 1;
}
print(" First Array : ", terminator: "");
self.display(arr1, s1);
print(" Second Array : ", terminator: "");
self.display(arr2, s2);
if ((s1 + s2) % 2 != 0)
{
print(" Median : ", result ," \n\n", terminator: "");
}
else
{
print(" Median Elements [", result ," ", temp ,"] \n", terminator: "");
result = (result + temp) / 2;
print(" Median : ", result ," \n\n", terminator: "");
}
}
}
func main()
{
let obj: MyArray = MyArray();
//When provide similar size of array elements
let a1: [Int] = [1, 2, 10];
let a2: [Int] = [4, 15, 16];
obj.median(a1, a2);
//When given
let a3: [Int] = [3, 11, 14];
let a4: [Int] = [6, 7, 22, 24];
obj.median(a3, a4);
let a6: [Int] = [-3, 5, 8, 9];
let a7: [Int] = [-6, -5, -3, -1, 9, 13];
obj.median(a6, a7);
}
main();``````

#### Output

`````` First Array :   1  2  10
Second Array :   4  15  16
Median Elements [ 10   4 ]
Median :  7

First Array :   3  11  14
Second Array :   6  7  22  24
Median :  11

First Array :   -3  5  8  9
Second Array :   -6  -5  -3  -1  9  13
Median Elements [ 5   -1 ]
Median :  2
``````

## Comment

Please share your knowledge to improve code and content standard. Also submit your doubts, and test case. We improve by your feedback. We will try to resolve your query as soon as possible.