首页 > 其他 > 详细

最近距离

时间:2014-02-19 15:40:03      阅读:259      评论:0      收藏:0      [点我收藏+]

已知平面上的若干点的位置,存入一个List中。现在需要计算所有这些点中,距离最近的两个点间的最小距离。

bubuko.com,布布扣

bubuko.com,布布扣
 1 import java.util.ArrayList;
 2 import java.util.List;
 3 
 4 
 5 public class Main {
 6 
 7     public static void main(String[] args){
 8 
 9         List<MyPoint>list=new ArrayList<MyPoint>();
10         list.add(new MyPoint(12.0,10.0));
11         list.add(new MyPoint(23.0,15.0));
12         list.add(new MyPoint(21.0,12.0));
13         list.add(new MyPoint(61.0,17.0));
14         list.add(new MyPoint(22.0,32.0));
15         list.add(new MyPoint(25.0,52.0));
16         System.out.println(MyPoint.getMinDistance(list));
17     }
18 }
19 
20 class MyPoint{
21     private double x;
22     private double y;
23     
24     public MyPoint(double x,double y){
25         this.x=x;
26         this.y=y;
27     }
28     
29     public static double distance(MyPoint p1,MyPoint p2){
30         double dx=p1.x-p2.x;
31         double dy=p1.y-p2.y;
32         return Math.sqrt(dx*dx+dy*dy);
33     }
34     
35     public static double getMinDistance(List<MyPoint>lst){
36         if(lst==null||lst.size()<2)return Double.MAX_VALUE;
37         
38         double r=Double.MAX_VALUE;
39         MyPoint p0=lst.remove(0);
40         for(int i=0;i<lst.size();i++){
41             MyPoint p=lst.get(i);
42             double d=MyPoint.distance(p0, p);
43             if(d<r)r=d;
44         }
45         
46         double d2=getMinDistance(lst);
47         return d2<r?d2:r;
48     }
49 }
View Code

最近距离

原文:http://www.cnblogs.com/gxilizq/p/3554765.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!