Todos los vecinos más cercanos k en 2D, C ++

Necesito encontrar para cada punto del conjunto de datos todos sus vecinos más cercanos. El conjunto de datos contiene aprox. 10 millones de puntos 2D. Los datos están cerca de la cuadrícula, pero no forman una cuadrícula precisa ...

Esta opción excluye (en mi opinión) el uso de árboles KD, donde la suposición básica es que ningún punto tiene la misma coordenada xy coordenada y.

Necesito un algoritmo rápido O (n) o mejor (pero no demasiado difícil de implementar :-))) para resolver este problema ... Debido a que el impulso no está estandarizado, no quiero usarlo ...

Gracias por sus respuestas o ejemplos de código ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta