// A C program to find median of two sorted arrays of unequal size
#include <stdio.h>
#include <stdlib.h>
float findMedian( int a[], int n, int b[], int m )
{
int k,i=0,count,j=0;
float m1,m2;
k=(n+m)/2+1;
// printf("%d %d %d ",n,m,k);
for(count=0;count<k;count++){
if(i==n){
m1=m2;
m2=b[j];
j++;
}
else if(j==m){
m1=m2;
m2=a[i];
i++;
}
else if(a[i]<b[j] && i<n){
m1=m2;
m2=a[i];
i++;
}
else if(a[i]>b[j] && j<m){
m1=m2;
m2=b[j];
j++;
}
}
if((n+m)%2==0){
return (m1+m2)/2;
}else
return m2;
}
// Driver program to test above functions
int main()
{
int A[] = {1,2};
int B[] = {5, 8, 10};
int N = sizeof(A) / sizeof(A[0]);
int M = sizeof(B) / sizeof(B[0]);
//printf("%d %d",M,N);
printf( "%f", findMedian
( A
, N
, B
, M
) ); return 0;
}
Ly8gQSBDIHByb2dyYW0gdG8gZmluZCBtZWRpYW4gb2YgdHdvIHNvcnRlZCBhcnJheXMgb2YgdW5lcXVhbCBzaXplCiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RkbGliLmg+CgpmbG9hdCBmaW5kTWVkaWFuKCBpbnQgYVtdLCBpbnQgbiwgaW50IGJbXSwgaW50IG0gKQp7CiAgIGludCBrLGk9MCxjb3VudCxqPTA7CiAgIGZsb2F0IG0xLG0yOwogICBrPShuK20pLzIrMTsKICAvLyBwcmludGYoIiVkICVkICVkICAgIixuLG0sayk7CiAgIGZvcihjb3VudD0wO2NvdW50PGs7Y291bnQrKyl7CiAgIAkJaWYoaT09bil7CiAgIAkJCW0xPW0yOwogICAJCQltMj1iW2pdOwogICAJCQlqKys7CiAgIAkJfQogICAJZWxzZSBpZihqPT1tKXsKICAgCQkJbTE9bTI7CiAgIAkJCW0yPWFbaV07CiAgIAkJCWkrKzsKICAgCQl9CiAgIAkJZWxzZSBpZihhW2ldPGJbal0gJiYgaTxuKXsKICAgCQkJbTE9bTI7CiAgIAkJCW0yPWFbaV07CiAgIAkJCWkrKzsKICAgCQl9CiAgIAkJZWxzZSBpZihhW2ldPmJbal0gJiYgajxtKXsKICAgCQkJbTE9bTI7CiAgIAkJCW0yPWJbal07CiAgIAkJCWorKzsKICAgCQl9CiAgIAkKICAgfQogICBpZigobittKSUyPT0wKXsKICAgCQlyZXR1cm4gKG0xK20yKS8yOwogICB9ZWxzZQogICAJCXJldHVybiBtMjsKfQogCi8vIERyaXZlciBwcm9ncmFtIHRvIHRlc3QgYWJvdmUgZnVuY3Rpb25zCmludCBtYWluKCkKewogICAgaW50IEFbXSA9IHsxLDJ9OwogICAgaW50IEJbXSA9IHs1LCA4LCAxMH07CiAKICAgIGludCBOID0gc2l6ZW9mKEEpIC8gc2l6ZW9mKEFbMF0pOwogICAgaW50IE0gPSBzaXplb2YoQikgLyBzaXplb2YoQlswXSk7CiAgIC8vcHJpbnRmKCIlZCAlZCIsTSxOKTsKIAogICAgcHJpbnRmKCAiJWYiLCBmaW5kTWVkaWFuKCBBLCBOLCBCLCBNICkgKTsKICAgIHJldHVybiAwOwp9