Write a C Program to calculate Median of two sorted arrays of different sizes.
#include <stdio.h>
// Function to find the median of two sorted arrays of different sizes
double findMedianSortedArrays(int arr1[], int m, int arr2[], int n) {
int merged[m + n];
int i = 0, j = 0, k = 0;
// Merge the two sorted arrays into a single sorted array
while (i < m && j < n) {
if (arr1[i] <= arr2[j]) {
merged[k++] = arr1[i++];
} else {
merged[k++] = arr2[j++];
}
}
// Copy remaining elements from arr1, if any
while (i < m) {
merged[k++] = arr1[i++];
}
// Copy remaining elements from arr2, if any
while (j < n) {
merged[k++] = arr2[j++];
}
// Calculate the median of the merged array
int total_size = m + n;
if (total_size % 2 == 0) {
int mid1 = merged[(total_size - 1) / 2];
int mid2 = merged[total_size / 2];
return (double)(mid1 + mid2) / 2.0;
} else {
return (double)merged[total_size / 2];
}
}
int main() {
int arr1[100], arr2[100];
int m, n;
printf("Enter the size of the first sorted array: ");
scanf("%d", &m);
printf("Enter %d elements for the first sorted array:\n", m);
for (int i = 0; i < m; i++) {
scanf("%d", &arr1[i]);
}
printf("Enter the size of the second sorted array: ");
scanf("%d", &n);
printf("Enter %d elements for the second sorted array:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr2[i]);
}
double median = findMedianSortedArrays(arr1, m, arr2, n);
printf("The median of the two sorted arrays is: %.2lf\n", median);
return 0;
}