Алгоритм ближайшей пары точек

В настоящее время я работаю над реализацией алгоритма ближайшей пары точек в C ++. То есть, учитывая список точек (x, y), найдите пару точек, которая имеет наименьшее евклидово расстояние. Я провел исследование в этом, и мое понимание алгоритма следующее (пожалуйста, исправьте меня, если я ошибаюсь):

Разбейте массив точек по центру. Рекурсивно найдите пару точек с минимальным расстоянием для левой и правой половин. Сортируйте левую и правую половины по y-координате и сравните каждую точку слева с ее 6 ближайшими соседями (по y-координате) справа. За этим стоит кое-что теоретическое, но это мое понимание того, что нужно сделать).

Я заставил работать рекурсивную часть алгоритма, но изо всех сил пытаюсь найти эффективный способ найти 6 ближайших соседей справа для каждой точки слева. Другими словами, учитывая два отсортированных массива, мне нужно найти 6 ближайших чисел в массиве B для каждой точки в массиве A. Я предполагаю, что здесь требуется нечто похожее на сортировку слиянием, но я не смог выяснить это. Любая помощь приветствуется.

Ответы на вопрос(2)

Ваш ответ на вопрос