已知平面上的若干点的位置,存入一个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 }
原文:http://www.cnblogs.com/gxilizq/p/3554765.html