Question
You have two sorted array of sizes m and n. How will find the k-th smallest number when these two sorted arrays are merged?
Try to get logarithmic performing algorithm
Answer
I have not tried a logarithmic performing one. But a O(k) performance code is easy to do. Just take two indices in a merge algorithm and traverse it.
Code
int findKSmall(int* a, int m, int* b, int n, int k)
{    int i=0;    int j=0;    int elem;    while(k>0)    {        if(a[i] < b[j]) {            if(i>m)                continue;elem = a[i];
i++;
}
        else {            if(j > n)                continue;elem = b[j];
j++;
}
k--;
}
    return elem;}
void main(){    int a[] = {2,4,6,9};    int b[] = {8,10,14,21,32,44};    int val = findKSmall(a,4,b,6, 10);}
 
 
No comments:
Post a Comment