给定两个大小分别为 m
和 n
的正序(从小到大)数组 nums1
和 nums2
。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n))
。
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
double res;
int len= nums1Size+nums2Size;
int nums[len];
memset(nums,0,len*sizeof(int));
int i=0,j=0,x=0;
while(x<len){
if(i<nums1Size&&j<nums2Size){
if(nums1[i]>nums2[j]){
nums[x]=nums2[j];
j++;
}else{
nums[x]=nums1[i];
i++;
}
x++;
}
if(i==nums1Size&&j<nums2Size){
nums[x]=nums2[j];
j++;
x++;
}
if(j==nums2Size&&i<nums1Size){
nums[x]=nums1[i];
i++;
x++;
}
}
if(len%2==0){
res=(nums[len/2]+nums[(len/2)-1])/2.0;
}else{
res=(double)nums[len/2];
}
return res;
}