Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在多个矩形中查找最近的矩形_Java_Javascript_Android_Arrays - Fatal编程技术网

Java 在多个矩形中查找最近的矩形

Java 在多个矩形中查找最近的矩形,java,javascript,android,arrays,Java,Javascript,Android,Arrays,我在这里遇到了一个难题,一个数组中有50个矩形,另一个数组中有50个矩形。我需要找到彼此最接近的两个矩形 所以我使用这个代码: for(int i=0;i<49;i++) { for(int j=0;j<49;j++) { double distance = Math.sqrt(Math.pow(rectF1.get(i).centerX() - rectF2.get(j).centerX(), 2) + Mat

我在这里遇到了一个难题,一个数组中有50个矩形,另一个数组中有50个矩形。我需要找到彼此最接近的两个矩形

所以我使用这个代码:

for(int i=0;i<49;i++)
{
 for(int j=0;j<49;j++)
 {
  double distance = Math.sqrt(Math.pow(rectF1.get(i).centerX() - rectF2.get(j).centerX(), 2) 
                               + Math.pow(rectF1.get(i).centerY() - rectF2.get(j).centerY(), 2));
 }
}

对于(int i=0;i您似乎将搜索基于矩形的中心。因此,您的问题成为最近邻问题。要解决此问题,我将使用KD树:


对于java库,请看

是的!谢谢!有没有地方可以让我学习java的所有这些数据结构类型?我喜欢学习:)这里的关键字是“数据结构和算法”。它是一门相当普遍的学科,独立于编程语言。我在大学里有一次关于它的讲座。但是在谷歌上搜索一下,你会发现很多资料。我想知道是否有更快的算法可以做到这一点。使用这种方法,我们需要使用kdtree索引第二个矩形集,它采用
O(m log m)
,其中
m
是第二个矩形集的大小。然后,对于第一个集合中的每个矩形,在第二个集合中找到最近的邻居,总体上取
O(n log m)
,其中
n
是第一个集合的大小。总的来说,这需要
O((n+m)log m)
。如果点均匀分布,可以将它们填充到网格中(取O(m)),然后在O(n)中进行最近邻搜索,总计为O*n+m)。但是,如果这些点聚集在一个小区域内,但有些点分散在一个大区域内,则这种方法将失败。