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

本文介绍了一种通过修改DoublingRatio类以提高倍率测试精度的方法。通过增加一个命令行参数来指定对于每个N值调用timeTrial()方法的次数,从而对不同规模的数据集进行多次实验,评估了结果的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

转载于:https://www.cnblogs.com/longjin2018/p/9854558.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值