Algs4-1.4.3画出DoublingTest正文中标准图像和对数图像

1.4.3修改DoublingTest,使用StdDraw产生类似于正文中标准图像和对数图像,概据需要调整比例使图像总能够充满窗口的大部分区域。
图片
public class DoublingTest
{
    public static double timeTrial(int N)
    {
        int MAX=1000000;
        int[] a=new int[N];
        for(int i=0;i<N;i++)
            a[i]=StdRandom.uniform(-MAX,MAX);
        Stopwatch timer=new Stopwatch();
        int cnt=ThreeSum.count(a);
        return timer.elapsedTime();
    }
   
    public static void main(String[] args)
    {
        double[][] p=new double[30][2];
        p[0][0]=0.0;
        p[0][1]=0.0;
        int i=1;
        for (int N=250;true;N+=N)
             {
                 double time=timeTrial(N);
                 p[i][0]=N;
                 p[i][1]=time;
                 draw(p,i);
                  i++;
                 StdOut.printf("%7d %5.1f\n",N,time);
             }
    }
    public static void draw(double[][] p,int i)
    {
    
        double x1=1.5*p[i][0];
        double y1=1>1.5*p[i][1]?1:1.5*p[i][1];
        StdDraw.setXscale(0,x1);
        StdDraw.setYscale(0,y1);
        StdDraw.setPenRadius(0.005);
        StdDraw.clear();
        for (int j=1;j<=i;j++)
           StdDraw.line(p[j-1][0],p[j-1][1],p[j][0],p[j][1]);
    }
}
posted @ 2018-10-26 08:57  修电脑的龙生  阅读(324)  评论(0编辑  收藏  举报