Is there a fast way to find closest pair of points in a two dimensional euclidean plane? better than O(n^2) in C#?