给定两个大小分别为 m
和 n
的正序(从小到大)数组 nums1
和 nums2
。请你找出并返回这两个正序数组的 中位数 。
示例 1:
输入:nums1 = [1,3], nums2 = [2] 输出:2.00000 解释:合并数组 = [1,2,3] ,中位数 2
示例 2:
输入:nums1 = [1,2], nums2 = [3,4] 输出:2.50000 解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5
提示:
nums1.length == m
nums2.length == n
0 <= m <= 1000
0 <= n <= 1000
1 <= m + n <= 2000
-106 <= nums1[i], nums2[i] <= 106
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size)
{
int nums[nums1Size+nums2Size],i,j,min;
for(i=0;i<nums1Size;i++)
nums[i]=nums1[i];
for(i=0;i<nums2Size;i++)
nums[i+nums1Size]=nums2[i];
for(i=0;i<nums1Size+nums2Size-1;i++)
{
min=i;
for(j=i+1;j<nums1Size+nums2Size;j++)
if (nums[j]<nums[min])
min=j;
if(min!=i)
{
nums[min]=nums[min]+nums[i];
nums[i]=nums[min]-nums[i];
nums[min]=nums[min]-nums[i];
}
}
if((nums1Size+nums2Size)%2==0)
return (nums[(nums1Size+nums2Size)/2-1]+nums[(nums1Size+nums2Size)/2])/2.0;
else
return nums[(nums1Size+nums2Size)/2];
}