《算法导论的Java实现》 序言
今天开始重新通读一遍《算法导论》。
看的同时把伪代码都用Java实现一遍。
写完程序有,在写点感想,发在自己的blog里面。
望大家支持。
有兴趣的朋友,也可以用emule下载一本中文版的《算法导论》,中文书名是《现代计算机常用数据结构和算法》,然后再下载一本《Introduction.to.Algorithms,.Second.Edition》,这是英文原版。虽然第一版的中文,和第二版的英文,肯定有地方会对不起来,不过也没有太大的关系。
我的程序不会完全“忠于”原著,因为伪代码直接翻译成Java的话,几乎没有什么技术含量。我希望可挑战一下,把Java的一些特性也融入到代码中,同时也多考虑一点通用性,使我写的Java代码可以在不同场合直接使用。
所以,不免会有错误。希望朋友们可以指出。
《算法导论的Java实现》 序言
原文:
序言
《算法导论》中文版,我手上拿到的是南京大学出版的《现代计算机常用数据结构和算法》,这是一本很好的书。
一个程序员学习一门新的语言的步骤,我觉得应该是这样的:
1,把所有的语法,API(库)都用一遍。
2,数值计算都用这么语言实现一把。因为数值计算里面会用到的大量的加减乘除(基本运算符),是非判断(if文),循环(while, for等),这是走向下一步的基础。
3,数据结构的实现,及其常用算法的实现。到这一步,会用到数组等稍微复杂一点的结构。而程序方面,也会用到递归,回溯等更用脑子的东西。
4,IOI(国际奥林匹克信息学竞赛)难度的题目的挑战。
第2步,有很多数值计算的书,大学计算机本科也有36课时的数值计算的课程,可参考的东西还是很多的。
第3步,大学里面的《数据结构》,一般用清华和复旦出的两个版本。我所在的大学用的是清华严蔚敏的,看到字符串匹配搜寻一节,他居然用了如此蹩脚的算法,让我大失所望。不过也不能完全怪他,在看他的书之前,我高中时常常去去复旦偷听计算机课(俺家里复旦很近,呵呵),复旦讲数据结构时,字符串匹配搜寻就讲得非常优雅。
第4步,首推的是清华吴文虎教授的教材。吴文虎是我最崇拜的计算机老师之一。后来还有一些青少年信息学奥林匹克竞赛的书,就讲的比较浅显,感觉配不上IOI这个名称。
第3步到第4步,是个挺大的飞跃,不是那么容易就可以跨过的。在我看来,《算法导论》是个好的桥梁,它的难度比《数据结构》(无论是清华还是复旦的)要高,如果可以通读,那么迈向IOI不是梦。虽然IOI的题,一般不会用到数据结构里的东西,但是有了数据结构武装的脑子,去理解并解开IOI的题,将更为容易。
所以,我想再一次通读《算法导论》的同时,把其中的伪代码用Java实现一遍,可以让初学Java的人也体会算法的乐趣。Java里的java.util包,实现了很多数据结构的东西,用起来当然非常方便了。但是,同时带来的问题也不少,用Java的人连排序都可以不用知道细节了,我看也未必是件好事儿。所以,我想那些已经了解数据结构的Java程序员,要更进一步学习的话,那就是“算法”!
之所以喜欢《算法导论》,还有个原因就是,它的原版是MIT(麻省理工学院)的,MIT是俺最向往的学府之一。同时,俺高中一个挚友在MIT攻读数学博士,现在快毕业了。我也希望在不甚景气的现在,他可以找到一份好的工作。遥想十多年前,我们俩刚刚大学毕业,蜗居(6平米的小房间)在上海交通大学之旁,每天下了班,他把计算机GRE的题翻译成中文给俺听,俺帮他解题,最后把他送出国门,现在回想,恍若隔日。
在写《算法导论的Java实现》时,同时参考了《算法导论》中文版(1994年版,应该是第一版)和英文的《Introduction.to.Algorithms,.Second.Edition》,由于版本不同,章节或许不同,我的东西将以中文的第一版为准。
------解决方案--------------------厉害,持续关注中……
------解决方案--------------------强人,顶!
另外,机械工业出版社出的,书名就叫《算法导论》,对应原版第二版。我手上有一本,只看了一点
------解决方案--------------------值得收藏!!!
------解决方案--------------------
------解决方案--------------------我有第二版中文版,不过没怎么看,惭愧!!!
------解决方案--------------------关注
学习
支持
顶
------解决方案--------------------
------解决方案--------------------等LZ你跟新。。
------解决方案--------------------前来学习 坦哥要加油啊(爱因斯坦在哪方面比较牛A来着。。)
------解决方案--------------------
------解决方案--------------------我文化水平不高 红黑树没看明白 看完HASH表之后 往后就看不懂了 就像上次您提到的图 我就一点都不会 其他的还残留些须印象 有些知道原理 但默写代码实现对我来说有点困难了
------解决方案--------------------长知识了,LZ真是牛人啊
------解决方案--------------------