Submission #23
Submitted Code
#include <stdio.h>
#include <stdlib.h>
// Compare function for qsort
int compare(const void *a, const void *b) {
return (*(int*)a - *(int*)b);
}
double findMedianSortedArrays(int* nums1, int m, int* nums2, int n) {
int total = m + n;
int* merged = (int*)malloc(sizeof(int) * total);
// Merge both arrays
for (int i = 0; i < m; i++) {
merged[i] = nums1[i];
}
for (int i = 0; i < n; i++) {
merged[m + i] = nums2[i];
}
// Sort merged array
qsort(merged, total, sizeof(int), compare);
// Find median
double median;
if (total % 2 == 0) {
median = (merged[total/2 - 1] + merged[total/2]) / 2.0;
} else {
median = merged[total/2];
}
free(merged);
return median;
}
// Sample driver code
int main() {
int nums1[] = {1, 2, 5};
int nums2[] = {3, 4};
int m = sizeof(nums1) / sizeof(nums1[0]);
int n = sizeof(nums2) / sizeof(nums2[0]);
double result = findMedianSortedArrays(nums1, m, nums2, n);
printf("Median: %.1f\n", result);
return 0;
}