首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

求会合内多个点之间最短距离

2012-12-27 
求集合内多个点之间最短距离package Karl.Doenitzimport java.util.ArrayListimport java.util.Listpub

求集合内多个点之间最短距离

package Karl.Doenitz;import java.util.ArrayList;import java.util.List;public class MyPoint{private double x;  // 横坐标private double y;  // 纵坐标public MyPoint(double x, double y){this.x = x;this.y = y;}public static double distance(MyPoint p1, MyPoint p2){double dx = p1.x - p2.x;double dy = p1.y - p2.y;return Math.sqrt(dx*dx + dy*dy);}/*  lst中含有若干个点的坐标  返回其中距离最小的点的距离*/public static double getMinDistance(List<MyPoint> lst){if(lst==null || lst.size()<2) return Double.MAX_VALUE;double r = Double.MAX_VALUE;MyPoint p0 = lst.remove(0);for(int i=0; i<lst.size(); i++){MyPoint p = lst.get(i);double d = MyPoint.distance(p0,p);if(d<r) r=d;}double d2 = getMinDistance(lst);return d2 < r ? d2 : r;}public static void main(String[] args) {MyPoint m1 = new MyPoint(1, 5);MyPoint m2 = new MyPoint(12, 5);MyPoint m3 = new MyPoint(3, 5);MyPoint m4 = new MyPoint(4, 7);MyPoint m5 = new MyPoint(9, 6);List<MyPoint> l = new ArrayList<MyPoint>();l.add(m1);l.add(m2);l.add(m3);l.add(m4);l.add(m5);System.out.println(MyPoint.getMinDistance(l));}}

热点排行