int findMedianinTwoSortedAray(int* arr1, int arr1Len, int* arr2, int arr2Len ) {
// write code here
int mid;
while(1){
if(arr1Len==1){
return *arr1>=*arr2?*arr2:*arr1;
}else{
int flag = arr1Len%2;
mid=flag==0?arr1Len/2-1:arr1Len/2;
if(arr1[mid]>arr2[mid]){//如果arr1>arr2则说明arr2[0-->mid]这部分的内容一定不包括中位数
arr2+=mid+1-flag;//此处要注意奇数的特殊情况
arr1Len=arr1Len/2+flag;
}else if(arr1[mid]<arr2[mid]){//同理
arr1+=mid+1-flag;
arr1Len=arr1Len/2+flag;
}else{
return arr1[mid];
}
}
}
return 1;
}
【题记】在两个长度相等的排序数组中找到上中位数
最新推荐文章于 2024-11-01 17:00:11 发布