最近距离

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

 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

 

posted @ 2014-02-18 19:03  JL-JackyLee  阅读(297)  评论(0编辑  收藏  举报