Fork me on GitHub

纸上谈兵: 算法与数据结构

算法和数据结构是计算机科学的核心内容。作为程序员,编程是我们的实战项目。然而,写出程序还不够。一个程序在应对一些大型而复杂的情况时,会耗费大量的时间。我们可以很容易写出一个从文件中找到一个词的程序,比如逐词扫描,看是否相符。但如果我们的文件有几十TB,而且要从文件中找到上百个词,逐个扫描的办法就几乎不可行。我们需要优化程序,以便我们的程序可以应对复杂问题。算法研究解决问题的方法,而数据结构则是设计一种更好的组织数据和使用数据的方式。两者有很强的相互依赖关系,所以往往放在一起讨论。

 

我将这一系列文章标题为“纸上谈兵”。历史上,纸上谈兵的是赵括。他是赵国名将赵奢的儿子。赵括自幼熟读兵书,但没怎么上过战场。他取代廉颇指挥赵军,与秦军对峙。由于他急于出击,导致赵军陷入圈套,兵败长平。四十万赵国士兵被坑杀,赵国一蹶不振。

 

就好像兵书一样,“算法和数据结构”的核心是处理计算机问题的一些基本原则经典案例。与介绍语言的语法书不同,“算法和数据结构”不能包治百病。很多时候,程序员需要修改已有算法,或者创造算法,才能解决问题。读过兵书之后,还要会活用,才算真正懂得了算法。我还是处于纸上谈兵的阶段,所以以“纸上谈兵”为标题以自勉。在这个系列中,我将简述一些经典算法和数据结构的基本思想,并分享我自己写的相关实现代码。这些代码纯粹是为了加深自己的理解写的,你完全可以忽略我写的代码,而自行实现。动手练习,是学习编程的最好途径了。

希望对大家有用。

 

数学归纳法, 递归, 栈

 

排序算法

 

表 (list)

 

栈 (stack)

 

队列 (queue)

 

树, 二叉树, 二叉搜索树

    AVL树

    伸展树 (splay tree)

 

堆 (heap)

    左倾堆 (leftist heap)

 

哈希表 (hash table) 

 

图 (graph)

    拓扑排序 (topological sort)

    最短路径(shortest path)与贪婪

 

 

RSA加密与破解

 

未完待续...

 

===================

下面是参考书籍:

豆列

http://book.douban.com/doulist/1938922/#sb1237002

 

posted @ 2013-03-22 23:34  Vamei  阅读(46912)  评论(10编辑  收藏  举报