编程语言
首页 > 编程语言> > java – 用于比较来自2个不同数组的点的最近对算法

java – 用于比较来自2个不同数组的点的最近对算法

作者:互联网

我想将一个数组中的点与另一个数组中的点进行比较,找到最接近的一对.直到现在我遇到的只有一个阵列.我不想比较来自同一阵列的点.
蛮力算法有效,但速度太慢.
是否有使用分而治之方法的算法或实现?

编辑1:一个点被定义为地球表面上的一对(纬度,经度).

解决方法:

您可以为第一个点阵列构建kd树,然后使用此树为第二个阵列的每个点找到第一个阵列中最近的点.它在av(n log n)上工作(n是两个数组中最大的一个的大小).要使用kd-tree,您可以将初始坐标转换为3D空间坐标.

标签:java,algorithm,arrays,closest-points,divide-and-conquer
来源: https://codeday.me/bug/20190624/1277813.html