#include<stdio.h>
#include<stdlib.h>
int main()
{
int nums1Size = 2,nums2Size = 2;
int nums1[2]={
1,2},nums2[2]={
3,4};
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size);
double b=findMedianSortedArrays(nums1, nums1Size,nums2, nums2Size);
printf("%lf",b);
}
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size){
int all = nums1Size + nums2Size;
int i=0,j=0,k=0;
int* nums3=(int* )malloc(sizeof(int)*all);//创一个空间
//将两数组中的数放入第三个数组中
while(i<nums1Size && j<nums2Size)
{
if(*(nums1+i)<=*(nums2+j)){
nums3[k++] = *(nums1+i);
j--;
}
else{
nums3[k++] = *(nums2+j);
i--;
}
i++;
j++;
}
//补上剩下的数
if(nums1Size <= i){
while(nums2Size > j){
nums3[k++] = *(nums2+j);
j++;
}
}
else if(nums2Size <= j){
while(nums1Size > i){
nums3[k++] = *(nums1+i);
i++;
}
}
if(all%2 != 0){
//奇数
return nums3[(all-1)/2];
}
else{
//偶数
double midage = (double)(nums3[all/2]+nums3[(all-2)/2])/2;
return midage;
}
return 0;
}
给俩个有序数组(从小到大),判断两者中全部元素的中位数
猜你喜欢
转载自blog.csdn.net/qq_52001969/article/details/112769478
今日推荐
周排行