用Java写程序平面坐标系中随机产生10个点,求哪两点之间的距离最短。
时间: 2024-10-08 20:04:47 浏览: 49
获取平面坐标系点到线段最短距离.txt
在Java中,你可以使用ArrayList存储生成的10个二维坐标点,并利用Collections.sort对它们按照横纵坐标的差值进行排序,找到距离原点最近的一对点。然后通过迭代计算每一对相邻点之间的欧几里得距离,逐步更新最小距离。
以下是简单的步骤和伪代码:
1. 创建一个Point类,包含x和y两个属性表示坐标。
```java
public class Point {
double x;
double y;
// 构造函数等
}
```
2. 随机产生10个点并存储到ArrayList中。
```java
List<Point> points = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Point p = new Point();
p.x = Math.random(); // 随机生成0到1之间的数
p.y = Math.random();
points.add(p);
}
```
3. 计算所有点到原点的距离,找到最小的那个作为基准。
```java
double minDistance = Double.MAX_VALUE;
Point closestPair = null;
// 如果有多个点距离相等,这里只保留一个
for (Point point : points) {
double distanceToOrigin = Math.sqrt(point.x * point.x + point.y * point.y);
if (distanceToOrigin < minDistance) {
minDistance = distanceToOrigin;
closestPair = point;
}
}
// 现在closestPair就是距离原点最近的点
```
4. 对剩下的9个点遍历,计算彼此间的距离,并更新最小距离。
```java
double shortestDistance = minDistance;
Point bestPair = closestPair;
for (int i = 0; i < points.size() - 1; i++) {
for (int j = i + 1; j < points.size(); j++) {
double distance = calculateDistance(points.get(i), points.get(j));
if (distance < shortestDistance) {
shortestDistance = distance;
bestPair = getClosestPoints(points.get(i), points.get(j));
}
}
}
// 最终的bestPair就是距离最短的两点
```
5. 函数`calculateDistance(Point a, Point b)`用于计算两点间的欧氏距离。
6. 函数`getClosestPoints(Point a, Point b)`返回距离最接近的点对。
阅读全文