I was recently asked this question in an interview:
There are two arrays of size \'n\' each. One array has nuts, the other one has bolts. Each nut fits exactly one bolt
The quicksort like algorithm does the job:
n
and use it as pivot to partition the set of bolts B
into three sets: tight (B1
), loose (B2
), fits.b
. Now you use this bolt as pivot to partition the nuts set N\n
into two set: tight (N1
) or loose (N2
).N1
and B1
, n
and b
, N2
and B2
. All of them are of the same size. You can do the same partitioning recursively on (N1,B2
) and (N2,B1
) and you can get the final answer.It is obvious the complexity is O(N log N)
, the same as quicksort.