This method's run time is O(NlogN) or therabouts, while your attempt is O(N**2).
I think your method is actually O(N+M) as you iterate each array once and johnirl's is O(N*M) because he iterates one array for each element in the other.
The difference in array size might be significant. That is why I used two different variables: N and M.
Update: A short /msg exchange with Zaxo prompted me to point out that searches and updates on hashes are expected to be O(1). That is, assuming that the hash function is a good one for your data. I believe it is a reasonable assumption to make here.
-sauoq
"My two cents aren't worth a dime.";