关于《算法(第四版 谢路云译)》标准库In、Out、StdOut和StdIn的正确配置和调用经验分享(以BinarySearch二分查找算法为例)
本人初学《算法(第四版 谢路云译)》有一段时间了,对于初学者按书敲完第一个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)社区版免费,企业版要收费,内部含有类似于cmd的Terminal很方便调试代码)