Untitled

mail@pastecode.io avatar
unknown
plain_text
a month ago
1.7 kB
1
Indexable
Never
#include <stdio.h>
#include <stdlib.h>

// Function to sort an array
void sortArray(int arr[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (arr[j] > arr[j + 1]) {
                int temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}

// Function to find the median of a sorted array
double findMedian(int arr[], int size) {
    if (size % 2 == 0) {
        return (arr[size / 2 - 1] + arr[size / 2]) / 2.0;
    } else {
        return arr[size / 2];
    }
}

// Main function to find the median of medians
double medianOfMedians(int arr[], int n) {
    int totalSubarrays = n * (n + 1) / 2;
    double medians[totalSubarrays];
    int medianIndex = 0;

    // Generate all subarrays
    for (int i = 0; i < n; i++) {
        for (int j = i; j < n; j++) {
            int subArraySize = j - i + 1;
            int subArray[subArraySize];

            // Fill the subarray
            for (int k = i; k <= j; k++) {
                subArray[k - i] = arr[k];
            }

            // Sort the subarray
            sortArray(subArray, subArraySize);

            // Find and store the median of the subarray
            medians[medianIndex++] = findMedian(subArray, subArraySize);
        }
    }

    // Sort the medians array
    sortArray((int *)medians, totalSubarrays);

    // Find the median of the medians array
    return findMedian((int *)medians, totalSubarrays);
}

int main() {
    int arr[] = {1, 2, 3};
    int n = sizeof(arr) / sizeof(arr[0]);

    double result = medianOfMedians(arr, n);
    printf("The median of medians is: %.2f\n", result);

    return 0;
}
Leave a Comment