转 https://blog.youkuaiyun.com/yuxin6866/article/details/52425202
**There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).**
Example 1:
nums1 = [1, 3]
nums2 = [2]
The median is 2.0
Example 2:
nums1 = [1, 2]
nums2 = [3, 4]
The median is (2 + 3)/2 = 2.5
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
int mid = (nums1Size+nums2Size)/2;
int j,k;
j=0;k=0;//cursor
int *p = (int *)malloc(sizeof(int)*(mid+1));
for(int i = 0 ; i < mid+1; i++){
if((k>=nums2Size||nums1[j]<nums2[k]) && j<nums1Size){
*(p+i) = nums1[j++];
}else{
*(p+i) = nums2[k++];
}
}
if ((nums1Size+nums2Size)%2 != 0){
return (double)(*(p+mid));
}else{
return (double)(*(p+mid-1)+*(p+mid))/2;
}
}