思路:将两个数组组成一个数组,将这个数组按照从小到大顺序排列,找出中间值;
代码:
void sort(int* x, int n)
{
int temp=0;
for(int i=0; i<n-1; i++)
{
for(int j=i+1; j<n; j++)
{
if(x[i]>x[j])
{
temp = x[j];
x[j] = x[i];
x[i] = temp;
}
}
}
}
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) {
double re=0;
int L=nums1Size+nums2Size;
int *data = (int*)malloc(sizeof(int)*(L));
memcpy(data,nums1,sizeof(int)*nums1Size);
memcpy(&data[nums1Size],nums2,sizeof(int)*nums2Size);
sort(data,L);
if(L%2==0)
{
re=(data[L/2-1]+data[L/2])/2.0;
}
else
{
re=data[L/2];
}
return re;
}
运行时间102ms,需要优化