平面坐标系中随机产生10个点,求哪两点之间的距离最短。java
时间: 2024-09-28 07:16:03 浏览: 50
在平面坐标系中生成10个随机点并找到它们之间最短距离的问题,可以分为两个步骤:首先生成随机点,然后计算所有点对之间的欧氏距离,并找出最小值。这里是一个简单的Java代码示例:
```java
import java.util.ArrayList;
import java.util.Collections;
public class ShortestDistance {
public static void main(String[] args) {
ArrayList<Point> points = new ArrayList<>();
for (int i = 0; i < 10; i++) {
double x = Math.random() * 100; // 随机X坐标范围在0到100之间
double y = Math.random() * 100; // 随机Y坐标范围在0到100之间
Point point = new Point(x, y);
points.add(point);
}
// 对点列表排序,假设升序排列会得到最短距离(如果存在多个相同距离,则依赖于排序算法)
Collections.sort(points);
// 初始化最短距离和对应的点
double shortestDistance = Double.MAX_VALUE;
Point closestPair = null;
// 遍历点,查找每一对相邻点的距离
for (int i = 0; i < points.size() - 1; i++) {
double distance = points.get(i).distanceTo(points.get(i + 1));
if (distance < shortestDistance) {
shortestDistance = distance;
closestPair = getClosestPoints(points.get(i), points.get(i + 1));
}
}
System.out.println("两点之间的最短距离为:" + shortestDistance);
System.out.println("这两个点分别为:" + closestPair);
}
private static Point getClosestPoints(Point p1, Point p2) {
return "Point(p1.x=" + p1.getX() + ", p1.y=" + p1.getY() + ") 和 Point(p2.x=" + p2.getX() + ", p2.y=" + p2.getY() + ")";
}
}
class Point {
private double x;
private double y;
public Point(double x, double y) {
this.x = x;
this.y = y;
}
// 欧氏距离计算
public double distanceTo(Point other) {
return Math.sqrt(Math.pow(this.x - other.x, 2) + Math.pow(this.y - other.y, 2));
}
// 省略getter和setter...
}
```
阅读全文