给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 。
请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log (m+n)) 。
示例 1:
nums1 = [1, 3] nums2 = [2] 中位数是 2.0
示例 2:
nums1 = [1, 2] nums2 = [3, 4] 中位数是 (2 + 3)/2 = 2.5
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
int i,j,k;int sum = 0;
int *arry = NULL;
i = j = k = 0;
arry = (int *)malloc((nums1Size + nums2Size)*sizeof(int));
double ret = 0.0;
while(i<=(nums1Size + nums2Size)/2){
if(((j < nums1Size) && (nums1[j] >= nums2[k])) || (j == nums1Size)) {
arry[i] = nums2[k];
k++;
}
else if(((k < nums2Size) && (nums2[k] >= nums1[j])) || (k == nums2Size)){
arry[i] = nums1[j];
j++;
}
}
if ((nums1Size + nums2Size) % 2 == 0) {
sum = arry[(nums1Size + nums2Size)/2] + arry[(nums1Size + nums2Size)/2 - 1];
ret = ((double) sum) / 2;
}
else
ret = ((double)arry[(nums1Size + nums2Size)/2]);
return ret;
}