算法和数据结构是计算机科学的核心内容。作为程序员,编程是我们的实战项目。然而,写出程序还不够。一个程序在应对一些大型而复杂的情况时,会耗费大量的时间。我们可以很容易写出一个从文件中找到一个词的程序,比如逐词扫描,看是否相符。但如果我们的文件有几十TB,而且要从文件中找到上百个词,逐个扫描的办法就几乎不可行。我们需要优化程序,以便我们的程序可以应对复杂问题。算法研究解决问题的方法,而数据结构则是设计一种更好的组织数据和使用数据的方式。两者有很强的相互依赖关系,所以往往放在一起讨论。
我将这一系列文章标题为“纸上谈兵”。历史上,纸上谈兵的是赵括。他是赵国名将赵奢的儿子。赵括自幼熟读兵书,但没怎么上过战场。他取代廉颇指挥赵军,与秦军对峙。由于他急于出击,导致赵军陷入圈套,兵败长平。四十万赵国士兵被坑杀,赵国一蹶不振。
就好像兵书一样,“算法和数据结构”的核心是处理计算机问题的一些基本原则和经典案例。与介绍语言的语法书不同,“算法和数据结构”不能包治百病。很多时候,程序员需要修改已有算法,或者创造算法,才能解决问题。读过兵书之后,还要会活用,才算真正懂得了算法。我还是处于纸上谈兵的阶段,所以以“纸上谈兵”为标题以自勉。在这个系列中,我将简述一些经典算法和数据结构的基本思想,并分享我自己写的相关实现代码。这些代码纯粹是为了加深自己的理解写的,你完全可以忽略我写的代码,而自行实现。动手练习,是学习编程的最好途径了。
希望对大家有用。
未完待续...
===================
下面是参考书籍:
豆列
http://book.douban.com/doulist/1938922/#sb1237002