java - 计算二维数组中两个值之间的最大欧氏距离

标签 java arrays multidimensional-array

我正在尝试计算二维数组中两个值之间的欧几里德距离。我需要最大的,所以我有 2 个 for 循环来遍历数组,并且我还有一个 maxDistance 变量来存储比较时的最大距离。

我的代码如下

  //Returns the largest Euclidean distance between any two cities 
 within the cities array
 public static double furthestDistance(int[][] x)
 {
int power;
double sum = 0.0;
int distance = 0;
int maxDistance = 0;
for (int i = 0; i < x.length; i++)
{
  for(int j = 0; j<x[0].length; j++) 
  {
     sum = (x[i][j] - x[i][i+1]) + (x[i][j] - x[i][j+1]);

    power = (int) Math.pow(sum, 2);
    distance = (int)Math.sqrt(power);                     

    if (distance > maxDistance) 
    {
      maxDistance = distance;
    }



  }
}
return Math.sqrt(sum);
}

我遇到了问题,收到一个错误,提示我的 arrayIndex 超出范围,但我不确定遍历数组以找到 2d 数组中任意两个值之间的最大距离(大约 10)的最佳方法是什么” x,y 坐标"

x 是一个城市数组,如下所示

int[][] cities0 = {{22,-45},{-20,-43},{-45,29},{41,35},{21,4}, 
{23,-37},{16,-19},{-44,-10},{26,15},{6,-30},{2,35},{6,-19}}; 

我不确定我是否以正确的方式解决问题,或者是否正确计算了距离?

最佳答案

欧几里德距离为

public static double calculateDistance(int[] array1, int[] array2)
    {
        double Sum = 0.0;
        for(int i=0;i<array1.length;i++) {
           Sum = Sum + Math.pow((array1[i]-array2[i]),2.0);
        }
        return Math.sqrt(Sum);
    }

现在,问题是你有一个点数组,每个点都由一个二元素数组表示。索引越界错误源于以下事实:

sum = (x[i][j] - x[i][i+1]) + (x[i][j] - x[i][j+1]);

它假设有下一个 i 和下一个 j,并且它假设 x 的第 i 个元素至少有 i + 2 个元素,如果 i > 0 将崩溃。使用我在答案开始时描述的方法,您的解决方案将如下所示:

double maxDistance = -1;
int firstPoint = -1;
int secondPoint = -1;
//notice that the limit is x.length - 1, because we will compare the penultimate
//item with the last
for (int i = 0; i < x.length - 1; i++) {
    for (int j = i + 1; j < x.length; j ++) {
        double d = calculateDistance(x[i], x[j]);
        if (d > maxDistance) {
            maxDistance = d;
            firstPoint = i;
            secondPoint = j;
        }
    }
}

关于java - 计算二维数组中两个值之间的最大欧氏距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54357325/

相关文章:

java - 使Java父类方法返回子类对象的方法

java - Java中固定大小的数组列表?

php - session 数组到 javascript 数组

Javascript:如何找到元素在多维数组中的位置

python - 在 NumPy 中将 4 维数组 reshape 为 2 维数组背后的直觉和想法

c - 传递给函数时如何访问二维结构数组中的所有成员?

java - 使用 libgdx 触摸板旋转播放器以面向移动方向

java - 如何使用beanIO解析定长记录?

java - Java中高效的二项式随机数生成器代码

arrays - 按多个字段对数组进行排序