Если необходимо постоянное количество минимальных расстояний ( следующие пары), можно изменить шаги 3-5 из статьи в Википедии, переопределив d_Lmin, d_Rmin, d_LRmin в качестве списков минимальных расстояний постоянной длины.При этом используется память c * log (n).
Если next используется менее чем за O (n) раз, чем переформулировка задачи CR для возврата на меньшее расстояние, большее, чем заданное d соответствует методу next .Это может быть реализовано с тем же подходом, что и CR.Я не вижу теоретической гарантии, что шаг 4 может быть выполнен за линейное время, но есть преимущество, чтобы не отмечать точки в маленьких прямоугольниках.
Если next используется больше, чем O (n) раз, чем лучше рассчитать все расстояния и отсортировать их (если память не проблема).