讀書筆記《算法》 習題 1.2.1

import java.util.Arrays;

import edu.princeton.cs.algs4.Point2D;
import edu.princeton.cs.algs4.StdDraw;
import edu.princeton.cs.algs4.StdOut;


/**
 * 從命令行接受一個整數N。
 * 在單位正方形內生成N個隨機點,然后計算兩點之間的最近距離。
 * @author lenovo
 *
 */
public class ShortDistance {

    public static void main(String[] args) {
        int N = Integer.parseInt(args[0]);
        Point2D[] p = new Point2D[N];
        
        //生成N個點
        for(int i = 0; i < N; i++) {
            double x = Math.random();
            double y = Math.random();
            p[i] = new Point2D(x,y);
            p[i].draw();
        }
        Arrays.sort(p);
        
        double minDistance = p[0].distanceTo(p[N-1]);
        int minIndex = N;
        
        //比較最小距離
        for(int i = 0; i < N-1; i++) {
            double min = p[i].distanceTo(p[i+1]);
            if(min < minDistance){
                minDistance = min;
                minIndex = i;
            }
        }
        
        StdDraw.setPenColor(StdDraw.RED);  
        //輸出
        if(minDistance == N-1){
            p[N-1].drawTo(p[0]);
        }
        else{
            p[minIndex].drawTo(p[minIndex+1]);
        }
        StdOut.print("最小距離為" + minDistance);
        
    }
}

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容