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