我把自己置于一个难题中,我在一个数组中有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中
答案 0 :(得分:1)
您似乎将搜索基于矩形的中心。因此,您的问题成为最近邻居的问题。要解决这个问题,我会使用KD-Tree:
http://en.wikipedia.org/wiki/K-d_tree
对于java库,请查看KDTree Implementation in Java