从许多地方寻找最接近的地方

时间:2014-06-21 08:47:07

标签: java javascript android arrays

我把自己置于一个难题中,我在一个数组中有50个rects,在另一个数组中有50个rects。我需要找到彼此最接近的两个地方。

所以我使用这段代码:

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));
 }
}

它有效但我必须检查2500次!如果rects移动(他们这样做)那么我可能无法在合适的时刻捕捉到最接近的地方! x.x中

1 个答案:

答案 0 :(得分:1)

您似乎将搜索基于矩形的中心。因此,您的问题成为最近邻居的问题。要解决这个问题,我会使用KD-Tree:

http://en.wikipedia.org/wiki/K-d_tree

对于java库,请查看KDTree Implementation in Java