博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Algs4-1.4.38 3-sum的初级算法与ThreeSum性能比较
阅读量:6719 次
发布时间:2019-06-25

本文共 1385 字,大约阅读时间需要 4 分钟。

1.4.38 3-sum的初级算法的实现。通过实验评估以下ThreeSum内循环的实现性能:
for(int i=0;i<N;i++)
  for(int j=0;j<N;j++)
    for(int k=0;k<N;k++)
       if(i<j && j<k)
          if(a[i]+a[j]+a[k]==0)
             cnt++;
为此实现另一个版本的DoublingTest,计算该程序和ThreeSum的运行时间的比例。
答:
图片
public class E1d4d38
{
    public static int countOfThreeSum(int[] a)
    {
        int N=a.length;
        int cnt=0;
        for (int i=0;i<N;i++)
            for (int j=i+1;j<N;j++)
               for(int k=j+1;k<N;k++)
                     if(a[i]+a[j]+a[k]==0)
                        cnt++;
        return cnt;
    }//end countOfThreeSum
   
   public static int countOfBasicThreeSum(int[] a)
    {
        int N=a.length;
        int cnt=0;
        for (int i=0;i<N;i++)
            for (int j=0;j<N;j++)
               for(int k=0;k<N;k++)
                   if(i<j && j<k)
                     if(a[i]+a[j]+a[k]==0)
                        cnt++;
        return cnt;
    }//end countOfBasicThreeSum
  
 
    public static void 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 timerBasicThreeSum=new Stopwatch();
        int cntBasicThreeSum=countOfBasicThreeSum(a);
        double timeBasicThreeSum= timerBasicThreeSum.elapsedTime();
         //
        Stopwatch timerThreeSum=new Stopwatch();
        int cntThreeSum=countOfThreeSum(a);
        double timeThreeSum= timerThreeSum.elapsedTime();
        //
        StdOut.printf("N=%7d BasicTime=%7.1f  ThreeSumTime=%7.1f  Rate=%7.1f \n",N,timeBasicThreeSum,timeThreeSum,timeBasicThreeSum/timeThreeSum);
    }
   
    public static void main(String[] args)
    {
        for (int N=250;N<Integer.MAX_VALUE/2;N+=N)
             {
                 timeTrial(N);
             }
    }//end main
}

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

你可能感兴趣的文章
安装mysql遇到的问题
查看>>
我的友情链接
查看>>
大道至简--GoEasy推送
查看>>
免费邮箱服务器(收藏)
查看>>
org.aspectj.lang.JoinPoint-中文简要API
查看>>
数据库内存使用
查看>>
shell-9-函数(tc与限速实例)
查看>>
[战略]Fans未来战略--第4篇--2012年的IT技术学习规划
查看>>
Linux入门之一:LInux系统环境及命令使用
查看>>
android 获得已安装应用
查看>>
REAPER Audio May Be Coming To Linux(专业的音频工作站)
查看>>
jquery 定位
查看>>
幻日奇观 黑龙江现“三个太阳”
查看>>
“可视化”人工神经网络揭示细胞内部活动
查看>>
perl高水线算法
查看>>
ES权威指南[官方文档学习笔记]-5---talking to elasticsearch
查看>>
性能测试中“并发度”的意义
查看>>
产品经理基本素养
查看>>
PyCharm3.0默认快捷键(翻译的)
查看>>
python3环境安装方法
查看>>