十本数据结构与算法书籍推荐_燕山暮雪的博客-程序员秘密_数据结构与算法教材

技术标签: 算法  数据结构教程  算法经典教材  数据结构与算法  数据结构  

学计算机的人是幸福的,因为在这个领域中有如此多的通俗易懂(相对来说)的经典好书,你需要做的只是坚持把它们一本一本读下去而已。在这里列出一些我看过或者准备看的算法书籍,以供参考。

第一名

原书名:The Art of Computer Programming

中文名:计算机程序设计艺术

作者:Donald E.Knuth

难度:★★★★★

个人评价:★★★★★

推荐程度:★★★

本书是算法分析的经典名作(用经典不太恰当,应该是圣经或史诗),被科学美国人列为20世纪12大科学名著之一(和Dirac的量子力学,Einstein 的广义相对论,von Neumann 的博弈论的著作等齐名)。其亮点在于其超乎寻常的数学技巧,要求读者拥有极高的数学修养,只要你坚持忍耐,一旦读懂了,你的算法和程序设计水平也会达到更高的档次,你会对程序设计有一种截然不同的体会和领悟,就是“道”(Tao)。

书的排版很漂亮(得益于作者的Tex系统),看起来很舒服。作者的文笔很好,写得生动活泼,读起来荡气回肠(英文版)。习题多且精华,触及算法和程序本质,书后有几乎所有习题的答案(占了整全书篇幅的1/4),书中的分析方法体现了作者严谨的风格。不过本书的程序不是用我们熟悉的高级语言描述的,而是作者设计的MIX语言。

整套书原计划出七卷,现在出了三卷:基本算法,半数值算法,排序和搜索,第四卷组合算法跳票了20年,Knuth称在2008年推出。本书有中文版,不过建议读者选用英文版,因为都学到这个程度了,英语应该不会有大困难了。

引用一句话“在我们的有生之年,可能会看到C++的消亡,但Knuth和他的程序设计艺术,将永远留在我们的心里。”

第二名

原书名: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,了解一下历史,看一下作者推荐的材料是不错的(如果你能找到的话)。

第三名

原书名:Data Structures and Algorithms Analysis in C/C++/JAVA

中文名:数据结构与算法分析——C语言描述/C++描述/Java语言描述

作者:Mark Allen Weiss

难度:★★★

个人评价:★★★★★

推荐程度:★★★★★

《数据结构与算法分析——C语言描述》(Data Structures and Algorithms Analysis in C)第二版,Mark Allen Weiss著,天津师范大学冯舜玺译,机械工业出版社。Weiss教授的数据结构经典教材三部曲之一,其中的C语言描述版本,也就是本书,被称为20世纪最重要的30本计算机教材之一。Mark Allen Weiss(马克?爱伦?韦斯),1987年在普林斯顿大学获得计算机科学博士学位,师从著名算法大师Robert Sedgewick,现任美国佛罗里达国际大学计算与信息科学学院教授。他曾经担任全美AP(Advanced Placement)考试计算机学科委员会的主席(2000-2004)。他的主要研究方向是数据结构,算法和教育学。中文版翻译质量很好。数学公式太多。网上可以下载书中代码,但是没有输出结果,也没有习题答案。

《数据结构与算法分析——C++描述》(Data Structures and Algorithms Analysis in C++)第三版,Mark Allen Weiss著,张怀勇等译,机械工业出版社。Weiss教授的数据结构经典教材三部曲之一。

《数据结构与算法分析——Java语言描述》(Data Structures and Algorithms Analysis in Java)第二版,Mark Allen Weiss著,天津师范大学冯舜玺译,机械工业出版社。Weiss教授的数据结构经典教材三部曲之一。

第四名

原书名:Introduction to The Design & Analysis of Algorithms

中文名:算法设计与分析基础

作者:Anany Levitin

难度:★★★

个人评价:★★★★

推荐程度:★★★★

算法书的另一种写法,以方法为主线,如Brute-Force, Divide-and-Conquer, Greedy techniques,书里面有很多有趣的习题

第五名

原书名:Data Structures, Algorithms, and Applications in C++

中文名:数据结构算法与应用-C++语言描述

作者:Sartej Sahni

译者:汪诗林等

难度:★★★

个人评价:★★★

推荐程度:★★★

不少人推荐这本书,但我个人觉得这书不怎么样,中文版翻译水平差强人意,数据结构算法部分把该讲的都讲了,但没什么突出的地方,反而C++倒说了不少,代码的水平也不怎么样。

从ACCU的评价上看,书中的实现与BOOST和STL相比相去甚远。不过这书有很多实际问题,可以看一看。

第六名

原书名: Programming Pearls

中文名: 编程珠玑

作者: Jon Bentley

难度:★★★

个人评价:★★★★

推荐程度:★★★★

编程珠玑:学习算法不仅需要像Alogrithms,算法导论这样的重量级的内功心法,像《编程之美》、《编程珠玑》这样的轻量级的轻功身法也必不可少。

前些年网上不是很流行像“给你10亿个数,找到最大的n个”或者“给你10亿个数,找出现次数最多的那个数”之类的百度面试题吗?看了此书你就知道怎么解决了。

相比于《编程之美》来说,本书中的示例技巧性略低一些,但是也更有实际应用价值一些。

第七名

原书名:Algorithm Design

中文名: 算法设计

作者: Jon Kleinberg / Éva Tardos

难度:★★★

个人评价:★★★★

推荐程度:★★★★

Algorithm Design 算法设计 很经典的一本书,很久之前看的。个人觉得“算法设计”比“算法导论”好。

我是先看到“算法导论”后看的“算法设计”,看“算法设计”的时候还是很享受这本书的,同时也把知识巩固了一遍

第八名

原书名:算法艺术与信息学竞赛

中文名: 算法艺术与信息学竞赛

作者: 刘汝佳

难度:★★★

个人评价:★★★★

推荐程度:★★★★

算法艺术与信息学竞赛:如果算法导论是九阳神功,那这本无疑就是九阴真经。

本书是专为参加一些诸如ACM之类程序设计比赛的同学而写的,江湖人称“黑书”。里面讲的都是一些在编程比赛中常用的算法、数据结构,以及一些数论和计算几何等。我虽然并不搞竞赛,但也从此书中受益颇多。

第九名

原书名: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++的,因为价钱最便宜:)。本书的一个特点就是例子取得很好,代码很清晰。有中文版

第十名

原书名:Algorithms Design Techniques and Analysis

中文名:算法设计技巧与分析

作者:M.H.Alsuwaiyel

难度:★★★★

个人评价:★★★★

推荐程度:★★★★

这本书对一般算法书较少涉及的概率算法和近似算法作了重要的补充

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/thebulesky/article/details/117093489

智能推荐

innodb 获取行锁争用情况_innodb加锁读引起的锁争用_cocoyan123的博客-程序员秘密

可以通过检查InnoDB_row_lock状态变量来分析系统上的行锁的争夺情况:mysql> show status like 'innodb_row_lock%';+-------------------------------+-------+| Variable_name                 | Value |+--------------------------

【数字图像处理】OpenCV3 扩展模块学习笔记_与光同程的博客-程序员秘密

1. 特征检测方法1.1. 特征定义1.2. 角点检测原理1.2.1. Harris角点检测原理1.2.2. Tomasi角点检测原理1.2.3. SURF特征检测1.2.4. SIFT特征点检测1.2.5. HOG 特征检测1.2.6. LBP 特征提取1.2.6.1. 原始LBP1.2.6.2. 圆形LBP算子1.3. HAAR特征提取1.3.1. 1.什么是haar特征?1.3.2. 2.如何利用特征 区分目标?1.3.3. 3.如何得到这个判决?1...

Modbus_master/slave_TCP/RTU_modbusserialmaster_aa70m1_xl的博客-程序员秘密

Modbus是一种串行通信协议,是Modicon于1979年为使用可编程逻辑控制器PLC而发表的.MODBUS是工业领域通信协议的业界标准,并且现在是工业电子设备之间相当常用的连接方式.Modbus比其他通信协议使用的更广泛的主要原因有:      1)公开发表并且无版税要求      2)相对容易的工业网络部署      3)对供应商来说,修改移动原生的位元或字节没有很多限制Modb...

K皇后问题_weixin_33709364的博客-程序员秘密

    FZU比赛残留了一题搜索题K Queen 没做, 题目大意就是在m*n的棋盘上布置k个皇后,使得这k个皇后互不攻击(这里的攻击含义同“八皇后问题”,即两个皇后不可以在同一行,同一列及同一斜线上)。其中1≤m*n≤150,1≤k≤50,时限10s        其实从题目中我们可以推出一个很简单但是很重要的结论,即min(m, n) < 13, 言下之意就是说这个棋盘的较短的一...

YOLOv5 anchor 编码(label assign)方式详解_u010900574的博客-程序员秘密

喜欢就关注AIZOO吧!YOLOv5 凭借其不错的性能,以及傻瓜式的使用方法,让其在社区的确比较火????。YOLOv5 在其 anchor 编码(也就是label assign)方式上,与...

图像和流媒体 -- 帧率、分辨率、码流的概念和关系_Java_2017_csdn的博客-程序员秘密

    图像和流媒体 -- 帧率、分辨率、码流的概念和关系2017-10-18 13:40 513人阅读 评论(0)收藏举报分类: 图像和流媒体(35) 作者同类文章X版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]一帧率分辨率码流的概念和关系

随便推点

对于EditText的详细用法_weixin_34138377的博客-程序员秘密

  EditText这个控件对于每一个Android开发者来说都是再熟悉不过了,但是,为什么有的人的EditText可以表现的那么好看,而刚入学Android的程序员来讲却丑到爆。这就充分的说明对于EditText的人是不够。今天本人就来对EditText的一些比较实用的特性做一些讲解。  普通的EditText:  对于一些普通的属性我就不在多说,我们来看一些比较被人们忽略却及其有...

C++11新特性-auto&decltype_Cassie612的博客-程序员秘密

C++11新标准中引入了auto和decltype这两种类型说明符,它们的共同点在于能够让编译器替我们分析表达式所属的类型,但是它们之间也存在一定的差异。下面就让我们来理解一下这两个类型说明符的不同。 auto auto是让编译器通过初始值来推算变量的类型,故auto定义的变量必须有初始值。 auto n1 = 2; //n1是一个整数 auto n2 = 'a'; /...

预编码算法介绍_小强~的博客-程序员秘密

在用于消除干扰的策略中,对发射信号进行预编码处理就是一种非常适用的方法。它的基本思想是,通过矩阵运算把经过调制的符号信息流和信道状态信息进行有机结合,变换成适合当前信道的数据流,然后再通过天线发送出去。预编码算法根据其中是否引入了非线性运算,分为线性预编码和非线性预编码。一些常用线性预编码算法:迫零(Zero - Force,ZF)预编码匹配滤波(Matched Filter,MF) 预编码最小均方误差(Minimum Mean Square Error,MMSE)预编码当 SNR 很大即噪

浅谈用户体验才是未来SEO优化的大趋势_用户体验优化势成为趋势_nongjicha的博客-程序员秘密

用户体会这个词出来的很早,近来被国内几个互联网大牛反复提过以后更是掀起一阵风潮,这时分说SEO优化的将来方向是用户体会难免有些跟风评论的戏谑,但跟着我搭站优化运营的经验越来越多时,我越发感受到用户体会很可能会对SEO优化造成很大的影响,乃至变成搜索引擎优化人员将来的挑选方针。数字电磁加热器-电磁加热器|造粒机电磁加热器|注塑机电磁加热器|塑料机电磁加热器|电磁加热板|冉智电磁厂家直销

Sublime text 3打开左侧目录结构及查看路径_孤城冰的博客-程序员秘密

1、打开左侧目录结构:View->Side Bar->Show Side Bar文件夹打开,可显示树结构的目录文档点击打开的文档右键显示为:2、打开文档所在文件夹其中Open Containing Folder...为打开文档所在文件夹Copy File Path 复制文件所在路径如果编辑的是html文件则右键显示点击Open in Br...

CV 参考手册_wode0239的博客-程序员秘密

HUNNISH 注: 本翻译是直接根据 OpenCV Beta 4.0 版本的用户手册翻译的,原文件是:/doc/ref/opencvref_cv.htm, 可以从 SOURCEFORG 上面的 OpenCV 项目下载,也可以直接从 阿须数码 中下载:http://www.assuredigit.com/incoming/sourcecode/opencv/chinese_docs

推荐文章

热门文章

相关标签