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

如果计算机系只开三门课,那么这三门课就一定是:离散数学,数据结构与算法,编译原理。如果只开一门课,那剩下的就一定是:数据结构与算法。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语言版)
作者:严蔚敏 吴伟民
难度:***
个人评价:***
推荐程度:***
另一本写的较好的中文数据结构算法书,这本书特别适合考试用(没有任何轻视的意思)
上面的书适合哪些人(我只是学生,这只是个人意见)
做学术研究:A+C+F
学过初级课程要深入:C+F+(I后三章)
在职或讲求实用:E
入门:B或D
程序设计竞赛:B+G+(I前八章)
考研或程序员考试:J

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/353447.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea资源包下创建资源包_资源包技巧和最佳实践

idea资源包下创建资源包今天是资源捆绑日。 通常,这是Java中最著名的国际化机制(i18n)。 使用它应该很容易。 但是,弄污双手时会出现许多小问题。 如果您有相同的想法,则此文章适合您。 基本 java.util.ResourceBundl…

MATLAB字符串输出

print();%最基本的字符串输出error();%主要用于报错

将JINQ与JPA和H2一起使用

几天前,我读了Iu Ming-Yee关于JINQ的有趣采访 。 顾名思义,JINQ是一种尝试提供类似于LINQ for Java的尝试。 基本思想是缩小在关系数据模型上执行查询的面向对象代码之间的语义鸿沟。 关系数据库模型的查询应轻松集成到代码中,以使其感觉更自…

蓝桥杯 2011年第二届C语言初赛试题(1)

轮换 串“abcd”每个字符都向右移位,最右的移动到第一个字符的位置,就变为“dabc”。这称为对串进行位移1的轮换。同理,“abcd”变为:“cdab”则称为位移2的轮换。 下面的代码实现了对串s进行位移为n的轮换。请补全缺失的代码。…

MATLAB读写mat文件

1. 保存mat文件:save %将工作区间中所有的变量都储存为MATLAB.mat文件中save filename %将工作区间中所有的变量都储存为filename.mat文件中save filename x1 x2 x3 ⋯⋯ xn %将工作区间中变量名位 x1 x2 x3 ⋯⋯ xn的变量都储存在filen…

奇偶换行颜色变化

<!DOCTYPE html><html> <head> <meta name"viewport" content"widthdevice-width"> <title>js</title> <style type"text/css"> td{ border: 1px solid red; } /* * 方法一 * tr:nth-child(odd):hove…

楼天城 楼教主

楼天城 求助编辑百科名片 楼天城楼天城是杭州人&#xff0c;姚期智教授的得意门生&#xff0c;正是姚教授发现他的才能后把他引上了现在的研究方向&#xff0c;并大力举荐他参加国际学术会议和比赛。在网络上他被称为“楼教主”&#xff0c;清华同学则简称他“教主”。中文名&a…

MATLAB读写Excel数据

读&#xff1a;[num,txt] xlsread(FileName.xls,n,basic);%num保存的是数据矩阵&#xff0c;txt保存的是文本矩阵&#xff0c;n是标签数从1开始计数,basic是区间&#xff0c;如A1:B3写&#xff1a;xlswrite(filename.xls,num,n,range);%:文件名&#xff0c;变量名&#xff0c;…

很多文章是在下转载贴在此处,是为了自己以后遇到类似问题一时想不起来

有转载有原创,更多是为了记录一些解决方案,,毕竟好记性不如烂笔头.转载于:https://www.cnblogs.com/wuchenV/p/9209356.html

jpa 与非jpa 结合_EasyCriteria –使用JPA标准的简便方法

jpa 与非jpa 结合今天&#xff0c;我们将看到有关此工具的信息&#xff0c;该工具使使用JPA Criteria更加容易。 使用该库的应用程序将在JPA实现中更加简洁&#xff0c;易于使用和可移植。 在本文的结尾&#xff0c;您将找到要下载的源代码。 什么是标准&#xff1f; 当前是创…

在c++中qsort()排序函数的使用qsort函数应用大全

七种qsort排序方法 <本文中排序都是采用的从小到大排序> 一、对int类型数组排序 int num[100]; Sample: int cmp ( const void *a , const void *b ) { return *(int *)a - *(int *)b; } qsort(num,100,sizeof(num[0]),cmp); 二、对char类型数组排序&#xff08;同in…

Python排序算法之快速排序

转自&#xff1a;https://www.cnblogs.com/AlwinXu/p/5424905.html 快速排序&#xff08;quickSort&#xff09; 快排的思想&#xff1a;首先任意选取一个数据&#xff08;通常选用数组的第一个数&#xff09;作为关键数据&#xff0c;然后将所有比它小的数都放到它前面&#x…

Apache PDFBox 2

Apache PDFBox 2已于今年早些时候发布 &#xff0c; Apache PDFBox 2.0.1和Apache PDFBox 2.0.2已发布。 Apache PDFBox是开源的&#xff08; Apache许可证版本2 &#xff09;并且基于Java&#xff08;因此易于使用&#xff0c;包括Java &#xff0c; Groovy &#xff0c; Scal…

HDU题目分类啊!!!

分类一&#xff08;详细&#xff09;&#xff1a; 分类二&#xff1a; 基础题&#xff1a;1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1094、1095…

关于DP与背包

听说过动态规划&#xff08;DP&#xff09;的同学应该都知道有背包问题的存在。 首先我们来了解一下动态规划 基本思想&#xff1a; 动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中&#xff0c; 可能会有很多可行解。没一个解都对应于一个值&#xff0c;我们希…

MATLAB图像中添加标记

指定坐标添加标记: text(x,y,str)手动指定位置添加标记: gtext(str)横纵坐标xlabel()%横ylabel()%纵tittle()%标题

QQ空间说说的表情添加的代码

QQ空间说说的表情添加的代码 [em]e100[/em] 微笑 [em]e101[/em] 撇嘴[em]e102[/em] 色[em]e103[/em] 发呆[em]e104[/em] 得意[em]e105[/em] 流泪[em]e106[/em] 害羞[em]e107[/em] 闭嘴[em]e108[/em] 睡[em]e109[/em] 大哭[em]e110[/em] 尴尬[em]e111[/…

使用Spring boot,Thymeleaf,AngularJS从零开始构建一个新的Web应用程序-第3部分

在之前的博客中&#xff0c;我们使用Thymeleaf&#xff0c;Bower和Bootstrap构建了登录页面&#xff0c;并将其部署到了Heroku。 在此博客中&#xff0c;我们将介绍用于前端的AngularJS和在后端的Spring Boot Web服务的一些功能。 我们将从“登录/注销”部分开始。 让我们开始…

Nginx配置安装

安装之前准备1、依赖 gcc openssl-devel pcre-devel zlib-devel 安装&#xff1a;yum install gcc openssl-devel pcre-devel zlib-devel -y 安装Nginx./configure make && make install 默认安装目录&#xff1a;/usr/local/nginx 配置Nginx为系统服务&#xff0c;以…