美文网首页
1.2 数据抽象 1.2.1

1.2 数据抽象 1.2.1

作者: cxfwxy | 来源:发表于2020-08-10 10:22 被阅读0次

    题目:编写一个Point2D的用例,从命令行接受一个整数N。在单位正方形中生成N个随机点,然后计算两点之间的最近距离。

    (用了两重for循环,效率确实挺差,等学完这本书之后再回过头来看看能不能想出别的高效方法。)

    最短距离用加粗红线标出
    import edu.princeton.cs.algs4.*;
    
    public class TestPoint2D {
    
        public static void main(String[] args) {
            
            int n = Integer.parseInt(args[0]);
    
            StdDraw.setCanvasSize(800, 800);
            StdDraw.setXscale(0, 100);
            StdDraw.setYscale(0, 100);
            StdDraw.setPenRadius(0.005);
            StdDraw.enableDoubleBuffering();
    
            Point2D[] points = new Point2D[n];
            for (int i = 0; i < n; i++) {
                int x = StdRandom.uniform(100);
                int y = StdRandom.uniform(100);
                points[i] = new Point2D(x, y);
                points[i].draw();
            }
    
            Double minDis = points[0].distanceTo(points[1]);
            Point2D p1 = new Point2D(0.0, 0.0);
            Point2D p2 = new Point2D(0.0, 0.0);
    
            StdDraw.setPenRadius();
            StdDraw.setPenColor(StdDraw.BLUE);
            for (int i = 0; i < n; i++) {
                for (int j = i+1; j < n; j++) {
                    if (points[i].distanceTo(points[j]) <= minDis) {
                        minDis = points[i].distanceTo(points[j]);
                        p1 = points[i];
                        p2 = points[j];
                    }
                    points[i].drawTo(points[j]);
                    StdDraw.show();
                    StdDraw.pause(100);
                }
            }
    
            StdDraw.setPenColor(StdDraw.RED);
            StdDraw.setPenRadius(0.01);
            p1.drawTo(p2);
            StdDraw.show();
            StdDraw.pause(100);
            
        }
        
    }
    
    

    相关文章

      网友评论

          本文标题:1.2 数据抽象 1.2.1

          本文链接:https://www.haomeiwen.com/subject/tvvddktx.html