求两个等长有序数组的中位数
2015-03-27 21:33
295 查看
//描述:两个排序的数组,长度都为n,求合并后的排序数组的中位数。注意,此题中两个数组的长度是相等的。 #include <iostream> #include <math.h> using namespace std; int MedianOfTwoSortArray(int a[],int b[],int n) { if (n<=0) { return -1; } if (n==1) { return (a[0]+b[0])/2; } if (n==2) { return (max(a[0],b[0])+min(a[1],b[1]))/2; } int median1,median2; //中位数 if (n%2==1) //n为奇数 { median1 = a[n/2]; median2 = b[n/2]; } else { median1 = (a[(n-1)/2]+a[n/2])/2; median2 = (b[(n-1)/2]+b[n/2])/2; } if (median1<median2) { if (n%2==1) { MedianOfTwoSortArray(a+n/2,b,n/2+1); } else MedianOfTwoSortArray(a+n/2,b,n/2); } else if (median1>median2) { if (n%2==1) { MedianOfTwoSortArray(a,b+n/2,n/2+1); } else MedianOfTwoSortArray(a+n/2,b,n/2); } else { return median1; } } int main() { int a[4] = {1,5,6,8},b[4]={2,3,7,9}; int res = MedianOfTwoSortArray(a,b,4); cout<<res<<endl; system("pause"); return 0; }
相关文章推荐
- 两个等长有序数组求中位数
- 求两个不等长、有序数组的中位数非常简洁的O(log(min(M,N)))迭代解详细解释
- 求两个等长有序数组的中位数的logN算法 分治法
- PHP 两个等长有序数组求合并后的中位数
- 求两个等长有序数组的中位数的logN算法 分治法
- 求两个等长有序数组的中位数的logN算法 分治法
- 求两个不等长的有序数组的中位数
- 关于在一个序列中寻找中位数和第K大的数(在两个等长有序数组中寻找中位数)
- 求两个有序非等长数组中位数
- 求两个等长有序数组中位数算法问题
- 求两个等长有序数组的中位数
- 求两个等长有序数组的中位数的logN算法 分治法
- [LeetCode]Median of Two Sorted Arrays 二分查找两个有序数组的第k数(中位数)
- 求两个有序数组的中位数
- 两个有序数组的中位数
- 找出两个有序数组所组成的数中的中位数
- [转载]寻找两个有序数组中的第K个数或者中位数
- 求两个有序数组的中位数
- 两个有序数组的中位数 【算法】
- 【分步详解】两个有序数组中的中位数和Top K问题