sundeepblue
3/9/2014 - 8:18 PM

get kth smallest element from two sorted arrays. top k from array

get kth smallest element from two sorted arrays. top k from array

int get_kth_element(int A[], int m, int B[], int n, int k) {
    if(m > n) return get_kth_element(B, n, A, m, k);
    if(m == 0) return B[k-1];
    if(k == 1) return min(A[0], B[0]);
    
    // divide k into two parts
    int i = min(k/2, m), j = k-i;
    if(A[i-1] == B[j-1]) return A[i-1];
    else if(A[i-1] < B[j-1])
        return get_kth_element(A+i, m-i, B, n, k-i);
    else 
        return get_kth_element(A, m, B+j, n-j, k-j);
}