Algoritmo de Par de Pontos Mais Próximo

Atualmente, estou trabalhando na implementação do algoritmo de par de pontos mais próximo em C ++. Ou seja, dada uma lista de pontos (x, y), encontre o par de pontos que tem a menor distância euclidiana. Fiz uma pesquisa sobre isso e meu entendimento do algoritmo é o seguinte (por favor, corrija-me se estiver errado):

Divida a matriz de pontos no meio Encontre recursivamente o par de pontos com a distância mínima para as metades esquerda e direita. Ordene as metades esquerda e direita pela coordenada y e compare cada ponto à esquerda com os 6 vizinhos mais próximos (pela coordenada y) à direita. Há algumas coisas teóricas por trás disso, mas essa é minha compreensão do que precisa ser feito

Eu consegui que a parte de recursão do algoritmo funcionasse, mas estou lutando para encontrar uma maneira eficiente de encontrar os 6 vizinhos mais próximos à direita para cada ponto à esquerda. Em outras palavras, dadas duas matrizes classificadas, eu preciso encontrar os 6 números mais próximos na Matriz B para cada ponto da matriz A. Suponho que algo semelhante à classificação de mesclagem seja necessário aqui, mas não consegui descobrir. Qualquer ajuda seria muito apreciad

questionAnswers(2)

yourAnswerToTheQuestion