Write a C Program to calculate Median of two sorted arrays of different sizes.

 

c programs


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;
}


Tags

Post a Comment

0 Comments
* Please Don't Spam Here. All the Comments are Reviewed by Admin.

You are being redirected...

10