现在的程序员总是用着别人封装好的函数、类、库、API,满满的,我们就会觉得编程不过是这么回事,搭积木而已,别人都把材料提供好了,至于材料是怎么做的,不用理会。
真的是这样吗?说数据结构和算法没用的人,那是因为他用不到。为什么用不到?他的层次决定了他不会接触到编程最关键最核心的部分——算法。
先不说那些反应算法的力量的似乎变态的问题,也不说2006年第4期《程序员》的专题,只说,当我们遇到一个问题时,如何搭建数学模型?当我们在有限的硬件条件下要完成高速的数据处理,如何设计?当我们为客户开发完一套软件后,能不能保证未来几年内数据猛增不会带来计算量的指数级增长?当我们需要升级服务器内存和硬盘是,能不能修改几个函数就避免硬件的投资?
这些问题的答案,请在这本书中寻找。
表、栈、队列、树、图等基本数据结构作者并未花大力气描述,而是重在后面的对这些数据结构的应用上,每一个结论都给出了详尽的数学证明,阅读过程中,我们可以感受到蕴含在其中的匠心独运的逻辑思维之美。借用GOOGLE黑板报的一个专题,算法体现了——“数学之美”。
并不是说本书就很完美了,有些章节讲得太过笼统,读起来跳跃感太强,比如第九章的网络流问题,介绍的太过简单,推导过程中省略了不少步骤,对增广路径算法讲的太粗,至于预流推进算法(Push-Relabel)则根本未提,不能不说是一个小小缺憾。
P93页 第四段结尾“我们总是遵守这个时间,即使偶尔有些不良操作”
与第五段开头“我们可以通过访问要被删除的节点实行删除操作”
这两段之间遗漏了英文原著中两大段的类容!!!!!
冯舜玺,wqnmlgb!!!
英文原版 3.4.2节:
Since there are a few options for implementation, it is probably
worth a comment or two in the code, if you don't use the size field.
该书的中文翻译是:
由于实现的方法有多种选择,因此如果你不使用表示大小的域,那就很有可能有必要进行一些讨论,否则会在一个程序中使用两种选择。
冯舜玺,你的英语是谁教的?你出来告诉我,我保证不打死你!