Untitled
unknown
plain_text
a year ago
1.7 kB
9
Indexable
#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;
}
Editor is loading...
Leave a Comment