最近在学习算法和数据结构方面的知识,看到一篇好的关于数据结构和算法的书籍

一、概要

如果计算机系只开三门课,那么这三门课就一定是:离散数学,数据结构与算法,编译原理。如果只开一门课,那剩下的就一定是:数据结构与算法。Niklaus Wirth说:算法+数据结构=程序,不说废话了,下面列出一份数据结构算法书目,先从最著名的说起

二、书籍简介

A

原书名:The Art of Computer Programming
中文名:计算机程序设计艺术
作者:Donald E.Knuth
难度:*****
个人评价:*******
推荐程度:****
本书是算法分析的经典名作(用经典不太恰当,应该是圣经或史诗),被科学美国人列为20世纪12大科学名著之一(和Dirac的量子力学,Einstein 的广义相对论,von Neumann 的博弈论的著作等齐名)。其亮点在于其超乎寻常的数学技巧,要求读者拥有极高的数学修养,只要你坚持忍耐,一旦读懂了,你的算法和程序设计水平也会达到更高的档次,你会对程序设计有一种截然不同的体会和领悟,就是“道”(Tao)。书的排版很漂亮(得益于作者的Tex系统),看起来很舒服。作者的文笔很好,写得生动活泼,读起来荡气回肠(英文版)。习题多且精华,触及算法和程序本质,书后有几乎所有习题的答案(占了整全书篇幅的1/4),书中的分析方法体现了作者严谨的风格。不过本书的程序不是用我们熟悉的高级语言描述的,而是作者设计的MIX语言。整套书原计划出七卷,现在出了三卷:基本算法,半数值算法,排序和搜索,第四卷组合算法跳票了20年,Knuth称在2008年推出。本书有中文版,不过建议读者选用英文版,因为都学到这个程度了,英语应该不会有大困难了。引用一句话“在我们的有生之年,可能会看到C++的消亡,但Knuth和他的程序设计艺术,将永远留在我们的心里。”

B

原书名:Introduction to Algorithms
中文名:算法导论
作者:Thomas H.Cormen,Charles E.Leiserson,Ronald L.Rivest,Clifford Stein
难度:***
个人评价:*****
推荐程度:*****
本书俗称CLRS(作者名字的简写),算法的经典教材,堪称算法分析著作中的“独孤九剑”。作者之一Ronald L.Rivest 由于其在公开秘钥密码算法RSA上的贡献获得了ACM图灵奖。全书内容全面,结构清晰,6个部分1000多页把数据结构算法的主要内容都包含了。作者用图表,伪码解释每一个算法,通俗易懂而不失严谨性,英文比较简单,语言流畅,因此,与TAOCP相比,这本书更适合初学者,不要求读者拥有很强的数学背景和丰富的编程经验。书中习题安排合理,难度适中,在网上有全部习题的答案,网上还有作者在MIT讲述本书的课程的录像,可谓资源丰富,值得注意的是书中每一章后面都有一个Chapter notes,了解一下历史,看一下作者推荐的材料是不错的(如果你能找到的话)。

C

原书名:The Design and Analysis of Computer Algorithms
中文名:算法设计与分析
作者:Aho,Hopcroft,Ullman
难度:****
个人评价:*****
推荐程度:*****
该书写于1976年,作者Hopcroft是 1986年ACM图灵奖得主,这三个人写过很多书,大多数都是经典,于一般的算法书不同,该书侧重于证明算法的正确性和复杂性,而不是怎样实现和应用算法,叙述上更加形式化,属于定义-引理-定理的数学书风格,认真研究一下里面的证明能大大提高理论水平。如果你看完了CLRS或其他数据结构入门书,要深入学习算法,但TAOCP看起来又太吃力的话,这本比较适合。最后一点是书中的习题很精华,即使你不看这本书,做一下里面的习题也是非常有意思的

D

原书名:Data Structures and Algorithms
中文名:数据结构与算法
作者:Aho,Hopcroft,Ullman
难度:***
个人评价:****
推荐程度:****
上面那本书的姐妹篇,内容就简单很多了,该书写法有个特点就是每一个主题都从一个基本的观念出发,然后再逐渐深入讨论,这样做能使解释更清晰,富有启发性。不过这本书写于20年前,所以有一些高级内容如红黑树是没有的,拿这本书做教材的读者最好同时拿一本较新的来做参考。

E

原书名:Algorithms in C,Algorithms in C++,Algorithms in Java
中文名:算法I-IV(C实现),算法V(C实现)(C++实现)(Java实现)
作者:Robert Sedgewick
难度:***
个人评价:****
推荐程度:****
Robert Sedgwick是Knuth的学生,现在是princeton的教授。这是三个系列,与上面用伪码描述算法不同,本书用现今流行的语言C,C++,Java描述.那么选拿哪一种语言好呢?从算法的角度看,任何高级语言都是没区别的,虽然实现算法的时候,到了语言相关的层面会有一些细微区别,但影响不大。个人推荐C++的,因为价钱最便宜:)。本书的一个特点就是例子取得很好,代码很清晰。有中文版

F

原书名:Algorithms Design Techniques and Analysis
中文名:算法设计技巧与分析
作者:M.H.Alsuwaiyel
难度:****
个人评价:****
推荐程度:****
这本书对一般算法书较少涉及的概率算法和近似算法作了重要的补充

G

原书名:Introduction to The Design & Analysis of Algorithms
中文名:算法设计与分析基础
作者:Anany Levitin
难度:***
个人评价:****
推荐程度:****
算法书的另一种写法,以方法为主线,如Brute-Force, Divide-and-Conquer, Greedy techniques,书里面有很多有趣的习题

H

原书名:Data Structures, Algorithms, and Applications in C++
中文名:数据结构算法与应用-C++语言描述
作者:Sartej Sahni 译者:汪诗林等
难度:***
个人评价:***
推荐程度:***
不少人推荐这本书,但我个人觉得这书不怎么样,中文版翻译水平差强人意,数据结构算法部分把该讲的都讲了,但没什么突出的地方,反而C++倒说了不少,代码的水平也不怎么样。从ACCU的评价上看,书中的实现与BOOST和STL相比相去甚远。不过这书有很多实际问题,可以看一看。

I

原书名:
中文名:算法与数据结构
作者:傅清祥 王晓东
难度:***
个人评价:****
推荐程度:****
这本是国人写的最好的数据结构算法书之一,讲得很细致。最后的三章:复杂性,并行算法,高级专题有一些有趣的东西,是这些高级内容的很好的导论。

J

原书名:
中文名:数据结构(C语言版)
作者:严蔚敏 吴伟民
难度:***
个人评价:***
推荐程度:***
另一本写的较好的中文数据结构算法书,这本书特别适合考试用(没有任何轻视的意思)

上面的书适合哪些人(我只是学生,这只是个人意见)

1、做学术研究:A+C+F
2、学过初级课程要深入:C+F+(I后三章)
3、在职或讲求实用:E
4、入门:B或D
5、程序设计竞赛:B+G+(I前八章)
6、考研或程序员考试:J

***转自:***http://blog.csdn.net/dr1103/article/details/5915724

有关算法方面的经典书籍推荐相关推荐

  1. Linux经典书籍推荐-转

    Linux经典书籍推荐 入门篇  <LINUX权威指南>书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux .另外比较热门的也可以看看<鸟哥的私房 ...

  2. 电子通信领域经典书籍推荐

    电子通信领域经典书籍推荐 [书名]:光同步数字传输网 http://bbs.cnttr.com/viewthread.php?tid=71513&extra=page%3D2 [语言]:中文 ...

  3. python经典好书-新手Python入门经典书籍推荐

    随着人工智能和大数据时代的来临,开始学习Python的朋友是越来越多了.近来就连房地产大亨潘石屹也在微博上表示,自己开始学Python了.确实在当下,无论是不是做程序员,还是在各个行业像是数据分析.运 ...

  4. Linux 好书、经典书籍推荐

    转载:http://blog.csdn.net/leonzhouwei/article/details/9053201 Linux 好书.经典书籍推荐 作者:http://www.ituring.co ...

  5. 经济金融经典书籍推荐(中文版)——转自豆瓣

    经济金融经典书籍推荐(中文版)--转自豆瓣 转载自mikko: <宏观经济学>曼昆 人民大学出版社(衔接性系统性欠缺) 曼昆的这本<宏观经济学>我认为优于其<经济学原理& ...

  6. 自我管理的经典书籍推荐:《自我管理必读12篇》

    自我管理的经典书籍推荐:<自我管理必读12篇> 什么是自我管理? 相信每一个追求高效的职场人士对这人词汇都不会感到陌生. 自我管理通常是指对自己时间.精力.情绪及心态等的管理.自我管理的最 ...

  7. 新手Python入门经典书籍推荐

    随着人工智能和大数据时代的来临,开始学习Python的朋友是越来越多了.近来就连房地产大亨潘石屹也在微博上表示,自己开始学Python了.确实在当下,无论是不是做程序员,还是在各个行业像是数据分析.运 ...

  8. 营销学入门书籍及市场营销经典书籍推荐

    营销入门书籍的话比较推荐大家看下<营销管理必读12篇>,这本书可能是最经典的市场营销书籍了.很多圈内大佬都有推荐,当然如果你有一定的经济基础和时间,还是比较建议你看下12Reads全系列的 ...

  9. Linux网络编程经典书籍推荐

    Linux网络编程经典书籍推荐 目录(?)[+] 首先要说讲述TCP/IP的书很多,其中有3泰书很全. 分别是<TCP/IP详解>三卷本,<用TCP/IP进行网际互连>三卷本, ...

最新文章

  1. 【DeepLearning工具】Fedora下安装theano
  2. mysql 字符串的处理
  3. Android APP层 ShellUtils
  4. .NET Framework 托管与非托管代码
  5. 【leetcode】Trips and Users
  6. Android 实时时间显示实现
  7. python科赫雪花小包裹_034 实例8-科赫雪花小包裹-Go语言中文社区
  8. 微信PC版通信协议研究
  9. 学习篇-TypeScript-简介
  10. PxCook像素大厨
  11. 电脑自带的cmd/Powershell连接远程服务器(实用技巧)
  12. 带内部参考电压(VREFINT)校正的STM32 DMA 内置温度采集
  13. 英文赞美句子,大家应该看看
  14. Dev C++报错找不到zlib1.dll解决办法以及调试入门
  15. 黑马程序员java学习打卡----程序流程控制
  16. linux aux是什么命令,linux命令ps aux|grep xxx详解
  17. JavaGUI小结——实验做的QQ登录界面
  18. 分数换算小数补0法_数学 | 循环小数的循环节以及永远追不上的乌龟
  19. matlab 图片相减,图像相减是什么
  20. 使用AlarmManager实现Android应用每天定时执行任务

热门文章

  1. kmalloc/kfree,vmalloc/vfree函数用法和区别
  2. linux设备模型之Class
  3. 语义分析的一些方法(下篇)
  4. java大乘期(33)----java进阶(springboot基础(1)----springboot基本概念)
  5. [Java基础] 反射机制汇总
  6. buu 丢失的MD5
  7. 用Go语言建立一个简单的区块链part4(1):交易(1)
  8. IDA+GDB远程调试android平台 - Aarch64- elf64程序
  9. 内核层CS段描述符信息
  10. 使用 pg_dump 迁移 postgresql