Algs4-1.4.39 改进倍率测试的精度

1.4.39 改进倍率测试的精度。修改DoublingRation,使它接受另一个命令行参数来指定对于每个N值调用timeTrial()方法的次数。用程序对每个N执行10、100和1000遍实验并评估结果的准确程度。
答:
图片
public class E1d4d39
{
  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 prev=0.0;
    double time=0.0;
    for (int i=10;i<=1000;i=10*i)
    {
       prev=0.0;
       for(int j=1;j<=i;j++)
           prev=prev+timeTrial(125);
   //

    for (int N=250;N<=8000;N+=N)
    {
      time=0.0;
      for(int k=1;k<=i;k++)
      {
         time=time+timeTrial(N);
      }//for k
      StdOut.printf("runTime=%5d N=%6d timeSecond=%7.1f  ratio=%5.1f\n",i,N,time/i,time/prev);
      prev=time;
    }//for N
  }//for i
}//end main
}//end class

posted @ 2018-10-26 09:33  修电脑的龙生  阅读(134)  评论(0编辑  收藏  举报