《算法导论的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》,由于版本不同,章节或许不同,我的东西将以中文的第一版为准。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值