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

Algs4-1.4.38 3-sum的初级算法与ThreeSum性能比较相关推荐

  1. leetcode探索专题中的初级算法练习题(python代码+解题思路)

    本文记录leetcode探索专题中的初级算法练习题,附python实现代码&解题思路,做题过程不免查阅网络资料,侵删~如有错误,欢迎指正交流! 目录 专题一:数组: 26.从排序数组中删除重复 ...

  2. LeetCode初级算法(数组)解答

    这里记录了LeetCode初级算法中数组的一些题目: 加一 本来想先转成整数,加1后再转回去:耽美想到测试的例子考虑到了这个方法的笨重,所以int类型超了最大范围65536,导致程序出错. class ...

  3. LeetCode_初级算法_数组

    LeetCode|初级算法_数组 题目如下: 1.1 从排序数组中删除重复项 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度. 不要使用额外的数组空间 ...

  4. Leetcode 初级算法 - 数学

    Leetcode 初级算法 - 数学 原始地址:https://github.com/jerrylususu/leetcode-easy 二级标题格式:[章节内题号] [题库内题号] [题目标题] 1 ...

  5. Datawhale组队学习:初级算法梳理课程任务

    背景 Datawhale 是国内很有名的一个开源学习组织.这个组织将渴望改变的学习者以及一群有能力有想法的青年人集结在一起,营造出一种互促高效的学习环境,一起为开源学习付出努力. Datawhale ...

  6. leetcode旋转数组 c语言,leetcode explore 初级算法第三题,旋转数组代码实现

    leetcode explore 初级算法第三题,旋转数组代码实现.原题链接: 题目分析 因为题目不是很长,这里把题目贴出来: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数. ...

  7. freeCodeCamp 学习记录——初级算法「01」翻转字符串

    从这篇开始与非将逐篇介绍在初级算法闯关中遇到的问题和记录,有疏漏和错误的地方希望大家可以帮忙指正.这里推荐一个MDN web docs网站,博客里的方法释义均来自此,点击相应位置可以获得详细释义. 问 ...

  8. leetcode初级算法6.字符串转整数(atoi)

    leetcode初级算法6.字符串转整数(atoi) 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法: public int myAtoi(String s) {//避免魔法值先设spaceS ...

  9. leetcode初级算法5.加一

    leetcode初级算法5.加一 仅为个人刷题记录,不提供解题思路 题解与收获 我的解法:(总结在代码中) public int[] plusOne(int[] digits) {//获取digits ...

最新文章

  1. C# socket 解析http 协议
  2. Android 8.0 adb分析
  3. 15.Node.js REPL(交互式解释器)
  4. C++ NULL nullptr和0的区别
  5. aip格式转化为pdf_python提取pdf文档中的表格数据、svg格式转换为pdf
  6. 每个努力奋斗过的人,被不公正的际遇砸了满头包的时候,都有那么一瞬间的代入感。出生就是hard模式的人,早已经历了太多的劳其筋骨饿其体肤,再多的人为考验只会摧毁人对美好的向往。...
  7. C++ 偏微分数值计算库_Windows下RTCGAToolbox库下载TCPA数据(RPPA)学习笔记
  8. HDU 3641 Treasure Hunting(阶乘素因子分解+二分)
  9. Atitit 让maven pom.xml不编译 1.build   2.  defaultGoalinstall/defaultGoal   3.  directory${bas
  10. 南卫理公会大学 计算机排名,2020年南卫理公会大学Times世界排名
  11. Windows7开机加速全攻略
  12. 在手机上运行 Python,这款工具比 QPython 还好用~
  13. 【RS-422与RS-485】RS-422与RS-485串行接口标准
  14. 都有哪些比较好用的项目管理软件?
  15. chromedriver的下载与使用-Windows64位系统(4)【图文并茂的小白级教程】
  16. 时间序列中的平稳性检验之单位根检验
  17. 蚂蚁金服对收购英支付企业不予置评,雷军忆当年“被迫”当金山CEO往事 | 雷锋早报...
  18. 乔布斯遗失16年采访:A级人才的自尊心,不需要呵护
  19. 《计算机组成原理(微课版)》第2章课后习题答案
  20. ABAP 创建、修改、删除内部交货单(VL31N/VL32N)

热门文章

  1. c语言编写一个函数判断闰年,C语言:实现一个函数判断year是不是闰年
  2. 产生随机数java_java产生随机数的几种方式
  3. 计算页数_中级会计师计算题、综合题的审题注意事项与解题思路
  4. 计算分数数组中去掉最低分的平均分,并打印
  5. 代码中 密码存储_你还记得浏览器自动存储的密码吗?用js代码恢复一下记忆吧...
  6. (十五)nodejs循序渐进-高性能游戏服务器框架pomelo之Protobuf模块
  7. 大数据学习(09)--spark学习
  8. C++ primer第六章函数的学习
  9. 记录 Annotation processing is not supported for module cycles.
  10. Django--Forms组件使用