今天开始重新通读一遍《算法导论》。
看的同时把伪代码都用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》,由于版本不同,章节或许不同,我的东西将以中文的第一版为准。

解决方案 »

  1.   


    如果找得到影印版,通知俺啊。
    不过俺看了,英文版开头里面的what's new,好像变化也不是太大。
      

  2.   

    高等教育出版社出过第二版的影印版
    http://www.china-pub.com/6434
    不知道第三版什么时候出影印版
      

  3.   

    呵呵,俺说的影印版,不是您说的影印版。
    俺是说who把中文的第二版扫描成pdf,可以让大家下载。
    英文的影印版已经不需要了。英文的原版,chm文件,emule上有下载的。
    我的文章里,伪代码都是从英文的原版的chm文件里面copy出来的。
      

  4.   

    我文化水平不高 红黑树没看明白 看完HASH表之后 往后就看不懂了 就像上次您提到的图 我就一点都不会 其他的还残留些须印象 有些知道原理 但默写代码实现对我来说有点困难了
      

  5.   

    晕咯 伪代码的话说不定可以实现 我看的数据结构方面的东西不多 就一本书 
    Java数据结构和算法中文第二版
    前面部分很容易理解 但是越往后越麻烦前面光看话就能知道什么意思 后面得敲完例子再看。。
      

  6.   


    读书不在多在精吧。《Java数据结构》没看过不知道好不好,但是数据结构+算法导论,配合的刚刚好。精读一遍,大有裨益吧?
    《算法导论》真的是难度上升太快。的确是,后面的一些算法,只凭脑子想象,不容易理解,我和你一样,这次也是一遍敲例子,一遍理解的。以前虽然通读过一遍,但是没有敲代码,当时以为已经理解的东西,回头再看的时候,发现原来还是有不明白的地方。
      

  7.   


    我现在看的《算法导论》中文第一版,质量还过得去,基本看看没有问题。很多地方有下的,我是用emule下了,上verycd找找好了。英文第二版也一样,用emule下,因为是chm文件,所以没有扫描质量问题了。伪代码也可以copy出来玩。