【ATT】Median of Two Sorted Arrays
findKthTwoSortedArray的应用。
double findMedianSortedArrays(int A[], int m, int B[], int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if(((m+n)&0x1)!=0) //odd { return findKthSortedArrays(A,m,B,n,(m+n+1)>>1); }else { int median1 = findKthSortedArrays(A,m,B,n,(m+n)>>1); int median2 = findKthSortedArrays(A,m,B,n,((m+n)>>1)+1); return ((double)median1+median2)/2; } } int findKthSortedArrays(int A[],int m,int B[],int n,int k) { int i = (int)((double)m/(m+n)*(k-1)); int j = k-1-i; int Ai_1 = (i==0?INT_MIN:A[i-1]); int Ai = (i==m?INT_MAX:A[i]); int Bj_1 = (j==0?INT_MIN:B[j-1]); int Bj = (j==n?INT_MAX:B[j]); if(Ai>=Bj_1&&Ai<=Bj) return Ai; if(Bj>=Ai_1&&Bj<=Ai) return Bj; if(Ai>Bj) return findKthSortedArrays(A,i,B+j+1,n-j-1,k-j-1); else return findKthSortedArrays(A+i+1,m-i-1,B,j,k-i-1); }