leetcode no4 - beyondnlp/nlp GitHub Wiki
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
int max, flag = 1;
int *nums, i, j, x, size=nums1Size+nums2Size;
double ret;
max = size/2+1;
nums = malloc(sizeof(int)*size);
for( i=0,j=0,x=0; ; ){
if( nums1[i] < nums2[j] ){
nums[x++] = nums1[i++];
if( i >= nums1Size ){
while( x <= max ) nums[x++] = nums2[j++];
}
}else if ( nums1[i] == nums2[j] ){
nums[x++] = nums1[i++];
nums[x++] = nums2[j++];
if( i >= nums1Size && j >= nums2Size ) break;
if( i >= nums1Size ){
while( x <= max ) nums[x++] = nums2[j++];
}
if( j >= nums2Size ){
while( x <= max ) nums[x++] = nums1[i++];
}
}else{
nums[x++] = nums2[j++];
if( j >= nums2Size ){
while( x <= max ) nums[x++] = nums1[i++];
}
}
if( x >= max ) break;
}
if( flag ) x = size/2;
if( !(size % 2 ) ){
ret = (double)(((double)nums[x-1]+(double)nums[x])/2);
}else{
ret = (double)nums[x];
}
free( nums );
return ret;
}
