The Findclosest.jl package exports a single function findclosest(pts[, dist]) that finds the closest pair of points in pts. It employs a standard multi-dimensional divide-and-conquer recursive algorithm with optimal scaling O(n log(n)) in the number of points n.
julia> using FindClosest, StaticArrays
julia> pts = rand(SVector{3,Float64}, 10^5);
julia> @time findclosest(pts)
0.083620 seconds (29 allocations: 5.049 MiB)
(0.00018927587118480567, (4517, 34872))The returned tuple has the form (d, (i, j)), where (i, j) are the indices of the two closest points in pts and d is their distance dist(pᵢ, pⱼ).
Possible future developments include multithreading, non-recursive algorithms and O(1) memory usage