Das ist deshalb so langsam, weil du für jeden Punkt im Schnitt die Hälfte oder so aller anderen Punkte durchläufst, um die Koordinaten zu vergleichen. Dadurch explodiert natürlich die Laufzeit bei größerem n. Du musst also das Nachschlagen von in der Nähe liegenden Punkten beschleunigen.
Wenn die Werte der Koordinaten alle in der gleichen Größenordnung sind, wäre eine Möglichkeit, sie durch Multiplikation mit einer geeigneten Konstante in Integer konvertieren, und diese dann einfach in eine Hashmap einzufügen (ggf. mehrfach wegen unterschiedlicher Rundung).
Eine andere Möglichkeit, die auch ohne Integer-Konvertierung funktionieren würde, wäre ein
K-d-Baum.