Untitled
#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