Algoritmo de par de puntos más cercano

Actualmente estoy trabajando en la implementación del algoritmo de par de puntos más cercano en C ++. Es decir, dada una lista de puntos (x, y), encuentre el par de puntos que tiene la distancia euclidiana más pequeña. He investigado sobre esto y mi comprensión del algoritmo es la siguiente (corríjame si me equivoco):

Dividir la matriz de puntos por el medio Recursivamente encuentra el par de puntos con la distancia mínima para las mitades izquierda y derecha. Ordene las mitades izquierda y derecha por coordenada y, y compare cada punto de la izquierda con sus 6 vecinos más cercanos (por coordenada y) a la derecha. Hay algunas cosas teóricas detrás de esto, pero esta es mi comprensión de lo que hay que hacer).

He conseguido que funcione la parte de recursión del algoritmo, pero estoy luchando por encontrar una manera eficiente de encontrar los 6 vecinos más cercanos a la derecha para cada punto a la izquierda. En otras palabras, dadas dos matrices ordenadas, necesito encontrar los 6 números más cercanos en la matriz B para cada punto de la matriz A. Supongo que aquí se requiere algo similar a la combinación, pero no he podido resolverlo. Cualquier ayuda sería muy apreciada.

Respuestas a la pregunta(2)

Su respuesta a la pregunta