Suppose we have two sets of points A, B, and we want to find for every point in set A its nearest neighbor in set B.
There are many good algorithms to find the near
You may benefit from reading bentleys "writing efficient programs" where he deals with a case study of the traveling salesman program. One of the savings that he recognized was that the distince between two points involved taking a square root which was expensive. Taking the square root gives you the actual distance, not taking the square root gives you a number which can be used to compare against other relative values.
I highly recommend reading the book. It will put your brain in the right place.
Details for step 2: Keep all edges of Voronoi diagram, currently intersected by sweep line, in some ordered container. When sweep line covers some vertex of Voronoi diagram, remove/add edges, incident to this vertex, from/to container. To look, between which edges some point is located, get successor/predecessor edges to this point in container.
Time complexity is O((M+N) log M). N = |A|, M = |B|.
A brute force solution could be to use a dendogram of closest points of set B. Then compare each point of set A to the dendogram. You can also create the dendogram with a delaunay triangulation.