本人初学《算法(第四版 谢路云译)》有一段时间了,对于初学者按书敲完第一个BinarySearch二分查找算法发现运行错误,我相信大家跟我一样内心是崩溃的。还好经过翻看多个相关论坛以及自己不断尝试最终调通了代码,在此我想把自己的经验分享给想学习算法和数据结构的大家,希望大家看完能有收货少走一些弯路。(第一次写博客,如有不详,见谅,请大牛们不要客气在评论区指正补充。)


1.确保Java环境配置正确(适用于JDK8及以下,JDK9将JDK和JRE分成两个独立的文件夹配置稍有不同不作讲解)

    新建用户变量:JAVA_HOME 、CLASSPATH 和系统变量:Path(确保JDK没安装在C盘,如果安装在C盘,三个变量都应在系统变量下,以确保能有足够权限掉用C盘路径里的库文件包。)

变量名:JAVA_HOME
变量值:d:\Program Files\Java\jdk1.8.0_102(JDK安装路径)

变量名:CLASSPATH
变量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\algs4.jar
%JAVA_HOME%\lib\algs4.jar,该多出的路径正是正确调用算法中库方法的关键,algs4.jar是在算法书中提供的学习网站上下载的https://algs4.cs.princeton.edu/code/,该网站提供了算法书上所有的内容及源代码数据文件等等,不过其实这代码资料其实algs4.jar压缩包解压后全有,在edu\princeton\cs\algs4路径下,该路径也是后面import调用库方法常用的路径,既然要常用我们就把该文件跟java自带的库文件放在一起,将下载下来的algs4.jar复制到d:\Program Files\Java\jdk1.8.0_102\lib)

变量名:Path
变量值:d:\Program Files\Java\jdk1.8.0_102\bin;d:\Program Files\Java\jdk1.8.0_102\jre\bin;

测试环境变量配置是否成功。同时按住Win和R键,桌面左下角弹出‘运行’窗口,输入cmd,再回车;跳出命令行窗口输入依次输入“java -version”、“javac”、“java


2.学会用cmd命令行窗口运行Java代码

准备好BinarySearch.java tinyW.txt tinyT.txt largeW.txt largeT.txt (这些文件在algs4.jar压缩包解压后edu\princeton\cs\algs4路径下全有,前面有提到) 放到同一路径下例如 E:\Program\java\BinarySearch下           对于源代码我们还需要修改一下,删除package edu.princeton.cs.algs4; 在后面添加

import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;                                             

保存代码后我们就可以开始用cmd来运行该代码了。 (以后其他代码类似,在源代码开头注释中有提到代码用到的库方法,按照以上方法,删除package edu.princeton.cs.algs4; 在后面添加需要用到的库方法就行)

第一步:将cmd访问路径更改到 E:\Program\java\BinarySearch

 第二步:编译代码,输入javac BinarySearch.java (该路径下会生成同名的.class文件) 

 第三步:运行代码,输入 java BinarySearch tinyW.txt < tinyT.txt

 和输入 java BinarySearch largeW.txt < largeT.txt | more (去掉| more后会运行很久也不太好检查结果,不建议去掉但也可以试试;运行结果会显示到-- More --,想看到下一个数据按Enter键就可以

最终运行结果与源代码注释和书上结果一样  

/******************************************************************************
 *  Compilation:  BinarySearch.java
 *  Execution:    java BinarySearch whitelist.txt < input.txt
 *  Dependencies: In.java StdIn.java StdOut.java
 *  Data files:   http://algs4.cs.princeton.edu/11model/tinyW.txt
 *                http://algs4.cs.princeton.edu/11model/tinyT.txt
 *                http://algs4.cs.princeton.edu/11model/largeW.txt
 *                http://algs4.cs.princeton.edu/11model/largeT.txt
 *
 *  % java BinarySearch tinyW.txt < tinyT.txt
 *  50
 *  99
 *  13
 *
 *  % java BinarySearch largeW.txt < largeT.txt | more
 *  499569
 *  984875
 *  295754
 *  207807
 *  140925
 *  161828
 *  [367,966 total values]
 *
 ******************************************************************************/

(注释给出的运行结果)  

(cmd中的运行结果)


3.提高部分(相比于eclipse建议使用JetBrain公司出的java开发工具Intellij IDEA(Community Edition)社区版免费,企业版要收费,内部含有类似于cmdTerminal很方便调试代码


关于《算法(第四版 谢路云译)》标准库In、Out、StdOut和StdIn的正确配置和调用经验分享(以BinarySearch二分查找算法为例)相关推荐

  1. JavaScript实现binarySearch二分查找算法(附完整源码)

    JavaScript实现binarySearch二分查找算法(附完整源码) Comparator.js完整源代码 binarySearch.js完整源代码 binarySearch.test.js完整 ...

  2. 0202插入删除-算法第四版红黑树-红黑树-数据结构和算法(Java)

    文章目录 4 插入 4.1 序 4.2 向单个2-结点插入新键 4.3 向树底部的2-结点插入新键 4.4 向一棵双键树(3-结点)中插入新键 4.5 颜色调整 4.6 根结点总是黑色 4.7 向树底 ...

  3. 01基础-算法第四版红黑树-红黑树-数据结构和算法(Java)

    文章目录 1 前言 2 定义 2.1 替换3-结点 2.2 等价定义 2.3 一一对应 3 基础 3.1 颜色表示 3.2 结点表示 3.2 旋转 3.3 旋转后重置父结点的链接 后记 1 前言 目前 ...

  4. WordNet 普林斯顿 算法第四版

    普林斯顿 算法第四版 本文的代码以及之前的作业代码可通过一下github链接获得 https://github.com/Changjing-Liu/algorithm_lab 文章目录 普林斯顿 算法 ...

  5. 二分查找算法java

    二分查找又称折半查找,它是一种效率较高的查找方法. 折半查找的算法思想是将数列按有序化(递增或递减)排列,查找过程中采用跳跃式方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元 ...

  6. leetcode中关于使用二分查找算法思想deal的题型

    学习了二分查找的算法思想之后,再leetcode上写了一道常见的简单面试题,现在用博客记录一下我学习刷题的笔记! leetcode 题号69:Sqrt(x)(经典的面试题) 给你一个非负整数 x ,计 ...

  7. 1.1.10 从二分查找BinarySearch开启算法学习之路---《java算法第四版》

    文章目录 0.前言 1.功能 2.示例 有两个名单tinyW.txt和tinyT.txt,将tinyT.txt名单中不在tinyW.txt的数据打印出来 ① 实现原理 ② 实现代码 ③ 性能分析 0. ...

  8. 算法第四版扔鸡蛋问题

    本题来源于算法第四版1.4.25.1.4.26. 同时好像记得看过的腾讯面经里也问到过类似题目,因此觉得有必要仔细做一下. 题目如下: 一幢 100 层的大楼,给你两枚鸡蛋.假设,在第 n 层扔下鸡蛋 ...

  9. 算法第四版- 3.1

    算法第四版- 3.1 文章目录 **算法第四版- 3.1** 1.二分查找 1)LC704二分查找 2)LC744二分查找 3)LC33搜索旋转排序数组 4)搜索旋转数组进阶 2.跳表 1.二分查找 ...

最新文章

  1. 远程Gitlab新建的分支在IDEA里不显示
  2. 自建html网页,幽灵自建的html5 的模板文件!
  3. 秦刚:积累财富最简单的一种模式:打造一项高收入技能
  4. Ansible自动化运维笔记1(安装配置)
  5. MySQL查询的进阶操作--子查询(内查询)
  6. 中央空调“国进外退”,格力、美的、海尔三大白如何角逐新市场?
  7. Pytorch中DNN入门思想及实现
  8. Bootstrap模态出现在背景下
  9. linux scp(ssh)免密发送(登陆)配置方法
  10. html5 星际摩托,HTML5 星际陨石环绕动效
  11. java将乱码转换成中文_转:java中文乱码的解决
  12. android控制灯编程,远程控制智能灯(android)
  13. python3.8安装pygame_Python3.8安装Pygame教程
  14. 找到某个关键字 同义词词林 python_3.6 什么是LSI关键字?为什么它对SEO很重要?...
  15. 解决MacOs10.15+ shimo 无法正常使用 PPTP协议问题
  16. js大于等于小于等于书写
  17. 文档型漏洞攻击研究报告
  18. Docker 容器监控原理及 cAdvisor 的安装与使用
  19. 大数据分析行业发展趋势
  20. 转战物联网·基础篇13-了解物联网之物连接相关通信技术(2)

热门文章

  1. 96.(leaflet之家)leaflet态势标绘-进攻方向修改(燕尾)
  2. IT三部曲之达摩研究院(上)
  3. 微信小程序开放平台代码部署特约商户
  4. ARM CPU挂死和总线挂死的DS-5调试方法
  5. 处理solr时遇到的问题
  6. android开发板出错,Kernel panic - not syncing: Attempted to kill the idle task!出错,求助!!!...
  7. linux 模拟器安卓版下载,ONS模拟器下载
  8. hdlc和ppp的pap认证和cahp认证,gre和mgre的使用和详解,nat地址的转换
  9. 不支持IE8及以下版本
  10. Python 常用的标准库以及第三方库有哪些?