算法第四版 课后习题答案


如果你是与JAVA相关方向的,可以看看这篇文章,相信对你会有所帮助: 点击打开链接


算法(第四版) 第12次印刷

感觉我真的是良心博主。。。。

注意!!! :书上的过程图有些是比较坑的(非错误问题),比如P525的NFA并不是只执行了构造函数后的结果而是将构造函数和该类中的一个方法一起运行后的结果,比较坑,如果对书中算法有什么不懂的可以看看我写的注释(在Algorithms中),如果没有注释的要么是没必要,要么就是我也不会(比如红黑树的删除部分)


关于终止Console继续读入流:

书上有一些题目需要从console读取流并进行处理(我之前的代码都是直接用In类和命令行参数代替了),从console读取有个问题就是如何终止流的输入,如果不手动终止输入StdIn.isEmpty始终是false,这样后面的代码始终无法执行,Eclipse默认的EOF是ctrl+Z(在console输入完内容按完回车以后按ctrl+z(在console中)就会终止当前输入,StdIn.isEmpty为true),有个尴尬的问题是ctrl+z经常是无效的即你按了ctrl+z也不能终止流的输入,一开始我以为是快捷键的冲突导致的,结果改了以后仍是无效的,但我发现每次第一次启动eclipse后用ctrl+z终止流输入时有效的再次运行那个类就失效了,因此我想到的就是每次运行过一次以后就刷新(eclipse最左边建工程的地方点鼠标右键)要注意一点,你刷新的时候一定要选定那个类不要点在别的类刷新,这样是没用的,再次运行时EOF有效(可能会出现刷新一次后EOF仍然失效,再次刷新一次即可,在刷新之前一定要把当前运行的类终止,即console中红色的小正方形点一下变灰色)


参考代码:点击打开链接


Eclipse从控制台直接读取文件:

比如你运行的类当前需要读取一个.txt的文件,而你不向想通过将内容复制到concole中读取或者通过命令行参数读取,而是想直接通过控制台读取并使用相应的方法,则可以通过这样设置达到目的:Run---->Run configurations--->




这样点击运行的时候控制台什么都不要输入,直接EOF(不会看第一条),在读取比特流的时候采用console读取具体数据和从控制台直接读取.txt文件时有区别的,具体区别见下面的参考代码里的注释,这是针对数据压缩那里的内容,前面的自行测试

参考代码:点击打开链接


针对第五章第五节数据压缩算法的测试,基本思路将output定向到一个.txt文件中(如何定向看第二条),将压缩后的比特流保存到一个.txt的文件中,验证解压缩算法时,从.txt文件中读取比特流然后在控制台打印解压后的内容,具体操作看下面的图:首先新建一个用于保存比特流的.txt文件,我这里是a.txt,将文件放入具体的包中,

然后将输出定向到该文件(看第二条),输出路径的设置:


首先先点inputfile通过workspace找到a.txt这个文件,这时候将inputfule的路径复制下来作为outputfile的路径,取消inputfile前面的勾,在outputfile前面打勾,然后apply,直接运行,这样压缩后的比特流就保存到了a.txt文件中(会提示你刷新,刷新一下就行了),验证解压缩算法的时候就是将inputfile定向到a.txt文件

参考代码:点击打开链接



eclipse命令行参数使用:

Run---->Run configurations----->右边 arguments 里写

用空白字符区别不同的命令行参数:

如:1 2 3    args.length=3

123    args.length=1

在命令行参数中读取测试用例 xxx.txt ,使用作者提供的jar包,参考书中205   我写的Algorithms/Number_2/Multiway

比如我把 测试用例 m1.txt  m2.txt  m3.txt拷到了包Number_2下  则只需修改 working directory 为Number_2

 

 

贴上我的GitHub地址,习题答案就在里面:

https://github.com/xiaoyuzdy/Algorithms

过几个月打算去找实习,题目会一直写,如果对你有帮助,觉得还不错,并且有github账户,麻烦给我个Star,这对我找工作很有帮助,十分感谢

其中 Algorithms 为书中的一些算法还有就是一些作者自己写的API的使用

AlgorithmsTest 为书中课后习题

TestCase.zip 为书中需要用到的测试用例可使用迅雷下载

再贴上GitHub上一个人写的:

https://github.com/aistrate/AlgorithmsSedgewick/tree/master/1-Fundamentals

 

 

相关推荐
算法(第四版) 目录: 第1章  基础  1 1.1 基础编程模型  4 1.1.1 Java程序基本结构  4 1.1.2 原始数据类型与表达式  6 1.1.3  语句  8 1.1.4  简便记法  9 1.1.5  数组  10 1.1.6  静态方法  12 1.1.7  API  16 1.1.8  字符串  20 1.1.9  输入输出  21 1.1.10  二分查找  28 1.1.11  展望  30 1.2  数据抽象  38 1.2.1  使用抽象数据类型  38 1.2.2  抽象数据类型举例  45 1.2.3  抽象数据类型实现  52 1.2.4  更多抽象数据类型实现  55 1.2.5  数据类型设计  60 1.3  背包、队列和栈  74 1.3.1  API  74 1.3.2  集合类数据类型实现  81 1.3.3  链表  89 1.3.4  综述  98 1.4  算法分析  108 1.4.1  科学方法  108 1.4.2  观察  108 1.4.3  数学模型  112 1.4.4  增长数量级分类  117 1.4.5  设计更快算法  118 1.4.6  倍率实验  121 1.4.7  注意事项  123 1.4.8  处理对于输入依赖  124 1.4.9  内存  126 1.4.10  展望  129 1.5  案例研究:union-find算法  136 1.5.1  动态连通性  136 1.5.2  实现  140 1.5.3  展望  148 第2章  排序  152 2.1  初级排序算法  153 2.1.1  游戏规则  153 2.1.2  选择排序  155 2.1.3  插入排序  157 2.1.4  排序算法可视化  159 2.1.5  比较两种排序算法  159 2.1.6  希尔排序  162 2.2  归并排序  170 2.2.1  原地归并抽象方法  170 2.2.2  自顶向下归并排序  171 2.2.3  自底向上归并排序  175 2.2.4  排序算法复杂度  177 2.3  快速排序  182 2.3.1  基本算法  182 2.3.2  性能特点  185 2.3.3  算法改进  187 2.4  优先队列  195 2.4.1  API  195 2.4.2  初级实现  197 2.4.3  堆定义  198 2.4.4  堆算法  199 2.4.5  堆排序  205 2.5  应用  214 2.5.1  将各种数据排序  214 2.5.2  我应该使用哪种排序算法  218 2.5.3  问题归约  219 2.5.4  排序应用一览  221 第3章 查找  227 3.1 符号表  228 3.1.1 API  228 3.1.2 有序符号表  230 3.1.3 用例举例  233 3.1.4 无序链表中顺序查找  235 3.1.5 有序数组中二分查找  238 3.1.6 对二分查找分析  242 3.1.7 预览  244 3.2 二叉查找树  250 3.2.1 基本实现  250 3.2.2 分析  255 3.2.3 有序性相关方法与删除操作  257 3.3 平衡查找树  269 3.3.1 2-3查找树  269 3.3.2 红黑二叉查找树  275 3.3.3 实现  280 3.3.4 删除操作  282 3.3.5 红黑树性质  284 3.4 散列表  293 3.4.1 散列函数  293 3.4.2 基于拉链法散列表  297 3.4.3 基于线性探测法散列表  300 3.4.4 调整数组大小  304 3.4.5 内存使用  306 3.5 应用  312 3.5.1 我应该使用符号表哪种实现  312 3.5.2 集合API  313 3.5.3 字典类用例  315 3.5.4 索引类用例  318 3.5.5 稀疏向量  322 第4章  图  329 4.1  无向图  331 4.1.1  术语表  331 4.1.2  表示无向图数据类型  333 4.1.3  深度优先搜索  338 4.1.4  寻找路径  342 4.1.5  广度优先搜索  344 4.1.6  连通分量  349 4.1.7  符号图  352 4.1.8  总结  358 4.2  有向图 
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值