求两个排队序列的中位数,我首先想到的是二路归并排序算法,这样做避免了各种情况的分析,相对比较简单,时间复杂度是O(m+n).
class Solution {
public:
double findMedianSortedArrays(int A[], int m, int B[], int n) {
int mid=(m+n)/2;
int i=0,j=0,num=0;
double median=0.0;
int C[m+n];
while(i<m && j<n)
{
if(A[i]<=B[j])
{
C[num++]=A[i++];
}
else
{
C[num++]=B[j++];
}
}
while(i<m) { C[num++]=A[i++]; }
while(j<n) { C[num++]=B[j++]; }
if(((m+n)%2)==1)
{
median=(double)C[mid];
}
else
{
median=(double)(C[mid-1]+C[mid])*1.0/2;
}
return median;
}
};