说到算法巨著,你可能想到的是《算法导论》这本经典。但在入门算法时,还有一本与之比肩的巨著,不得不提,它就是《算法(第4版)》。

这本豆瓣评分 9.4 的算法巨著,可谓是算法经典好书,给了无数人帮助。它是由普林斯顿的 Robert Sedgewick 和 Kevin Wayne 所写,其中 Sedgewick 作为 Knuth 的学生,继承了他们这一派的算法分析思路。

《算法(第4版)》全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。在第 4 版中,还具体给出了每位程序员应知应会的 50 个算法,不仅提供了实际代码,而且这些 Java 代码实现采用了模块化的编程风格,读者可以方便地加以改造。

这本书初学者看完不会有挫败感,不会给你一种“啃”书的感觉,而是跟着作者的思路一点点地带入。因为其内容对初学者友好,《算法(第4版)》也收获了众多粉丝。看看读者都是怎么评价的:

“这本书很适合刚刚入门或者离开校园已久需要复习一下算法基础的人。说起实用性,这本书比很多同类的书好太多了。省去了很多数学推导,非常适合需要准备面试,需要快速回顾一下基本的算法及其实现的人。”

“最好的算法入门书,当之无愧。内容全面实用,覆盖常用的排序、查找、图、字符串操作,讲解生动,能用简单精炼的语句将复杂问题讲清楚,可见作者的算法和语言功力都很出色。”

“不愧是大师的作品,读起来酣畅淋漓。这本书架构清晰明了,算法思想通俗易懂,学完很难忘记。其中的思想给我带来了一个新的世界,在这个世界我见识了很多新奇又好玩的事物。读此书犹如小孩把玩自己的玩具,久久不能放下。”

这样一本神作,影响了一代又一代的程序员。如果你想全面了解算法,希望你能走近这本书。

整本书基于 Java,第一章就很简洁地讲解了 Java 的主要内容,没学过 Java 的人,也可以轻松上手。而且本书代码实现非常详细,内容比较简单,一步步用图告诉你代码是如何运行的,所有算法都很基础,不仅适合大学生阅读,还适合初入职场需要提升的职场小白们,以及中高级工程师回顾补充算法知识之用。

下面是这本书的目录(滑动查看):

目录

这里给大家一点小建议,第一章的 1.2 数据抽象和 1.4 算法分析一定要仔细读, 因为这两节是全书的基础。

第二章到第五章也要仔细看, 涉及到的算法一定要跟着敲一遍。

第四章图论是相对独立的一章,只有在第五章正则表达式的 NFA 的构造中会用到有向图中的知识, 里面涉及到的算法也比较容易理解。

书中部分小节后面有习题、答疑等,小伙伴们一定要跟着练习才能巩固提高。下面选取 1.4 的答疑部分,给各位同学展示一下。

1

在近似函数的定义中,“随着N 的增大”确切的意思是什么?

滑动滚动条查看答案

f(N)~g(N) 的正式定义为limN→∞f(N)/g(N)=1。

2

我还见到过其他表示增长的数量级的符号,它们都表示什么意思?

滑动滚动条查看答案

使用最广泛的记法是“大O”:对于f(N) 和g(N),如果存在常数c 和N0 使得对于所有N>N0 都有| f(N) | < cg(N),则我们称f(N) 为O(g(N))。这种记法在描述算法性能的渐进上限时十分有用,这在算法理论领域是十分重要的,但它在预测算法性能或是比较算法时并没有什么作用。

3

当一个算法的运行时间的增长数量级为NlogN 时,根据双倍测试会得到它的运行时间为~ aN 的猜想(其中a 为常数)。这有问题吗?

滑动滚动条查看答案

需要注意的是,我们不能根据实验数据推测它们所符合的某个特定的数学模型。但如果我们只是在预测性能,这并不是什么问题。例如,当N 在16 000 到32 000 之间时,14N 和NlgN 的图像非常接近。这些数据同时与两条曲线吻合。随着N 的增大,两条曲线更为接近。想要用实验来检验一个算法的运行时间是线性对数级别而非线性级别是要费一番工夫的。

4

int[] a = new int[N] 表示N 次数组访问吗(所有数组元素均会被初始化为0)?

滑动滚动条查看答案

大多数情况下是的,我们在本书中也是这样假设的,不过复杂编译器的实现会在遇到大型稀疏数组时尽力避免这种开销。

另外,配套网站 algs4.cs.princeton.edu 还提供了本书内容摘要以及相关代码、测试数据、编程练习、教学课件等资源,有需要的同学们可以自行查找。

图书简介

本书作为算法领域经典的参考书,全面介绍了关于算法和数据结构的必备知识,并特别针对排序、搜索、图处理和字符串处理进行了论述。第 4 版具体给出了每位程序员应知应会的 50 个算法,提供了实际代码,而且这些 Java 代码实现采用了模块化的编程风格,读者可以方便地加以改造。本书配套网站提供了书中内容的摘要及更多的代码实现、测试数据、练习、教学课件等资源。本书适合用作大学教材或从业者的参考书。

本书特色

  • Sedgewick 之巨著,与高德纳 TAOCP 一脉相承

  • 几十年多次修订,经久不衰的畅销书

  • 涵盖所有程序员必须掌握的 50 种算法

作者介绍

Robert Sedgewick

斯坦福大学博士,导师为 Donald E. Knuth,从 1985 年开始一直担任普林斯顿大学计算机科学系教授,曾任该系主任,也是 Adobe Systems 公司董事会成员,曾在 Xerox PARC、国防分析研究所(Institute for Defense Analyses)和法国国家信息与自动化研究所(INRIA)从事研究工作。他的研究方向包括解析组合学、数据结构和算法的分析与设计、程序可视化等。

Kevin Wayne

康奈尔大学博士,普林斯顿大学计算机科学系高级讲师,研究方向包括算法的设计、分析和实现,特别是图和离散优化。

文末赠书

文末小福利,评论区说说你看过哪本算法书,收获如何?或者已经看过这本书的小伙伴可以一句话推荐一下这本书。本期将选取 位送上珍贵的《算法(第4版)》一本。截止时间:2021.8.13 14:00

豆瓣评分 9.4 的算法巨著,这本书带无数读者入门算法相关推荐

  1. 豆瓣评分 9.4 的编程巨著!《算法》

    本次联合图灵出版社文末送10本<算法>! 说到算法巨著,你可能想到的是<算法导论>这本经典.但在入门算法时,还有一本与之比肩的巨著,不得不提,它就是<算法(第4版)> ...

  2. 豆瓣评分 9.3 的 Java 巨著 | Bruce Eckel 重讲 Java 的编程思想

    硅谷创业之父 Paul Graham 曾在<黑客与画家>中写道:"判断一种语言是否流行的条件是,一种免费的实现,一本相关的书籍,以及语言所依附的计算机系统." 当然,J ...

  3. 豆瓣评分8.0:深入理解Java虚拟机,把的GC算法与实现讲得明明白白

    Java垃圾回收 有学过JVM垃圾回收机制的小伙伴肯定了解过GC调优,当面试官问到这个问题时,相信很多小伙伴第一时间想到的就是调节几个参数,调节一下分代的大小.可是这么简单的几句话怎么能让面试官觉得你 ...

  4. < 每日算法:一文带你认识 “ 双指针算法 ” >

    每日算法:初识双指针算法

  5. python编程快速上手 让繁琐工作自动化 豆瓣_2019年,这些豆瓣评分9.0以上的8本程序员好书你都知道吗?...

    豆瓣这些9.0以上的高评分程序员好书你都知道有哪些吗?小编去豆瓣看了一下,推荐这8本最适用的程序员好书给你. 1.UNIX环境高级编程(第3版)(豆瓣评分9.6)UNIX编程圣经 与Linux相结合的 ...

  6. 2019年,这些豆瓣评分9.0以上的8本程序员好书你都知道吗?

    豆瓣这些9.0以上的高评分程序员好书你都知道有哪些吗?小编去豆瓣看了一下,推荐这8本最适用的程序员好书给你. 1.UNIX环境高级编程(第3版)(豆瓣评分9.6) UNIX编程圣经 与Linux相结合 ...

  7. R在线性回归中的应用--分析豆瓣评分与票房之间关系的案例研究

    一数据准备 二查看各国影片的票房概况 三通过简单线性回归研究豆瓣评分与票房之间的关系 四小结 一.数据准备 我们需要的票房数据来自CBO中国票房网,中国票房网记录了从2008年到目前为止的每年票房排名 ...

  8. 【BZOJ】3052: [wc2013]糖果公园 树分块+带修改莫队算法

    [题目]#58. [WC2013]糖果公园 [题意]给定n个点的树,m种糖果,每个点有糖果ci.给定n个数wi和m个数vi,第i颗糖果第j次品尝的价值是v(i)*w(j).q次询问一条链上每个点价值的 ...

  9. 手把手带你拆解 LRU 算法

    手把手带你拆解 LRU 算法 文章目录 手把手带你拆解 LRU 算法 概述 [146. LRU 缓存](https://leetcode-cn.com/problems/lru-cache/) LRU ...

最新文章

  1. 图灵2011年6月书讯【误区】【软件调试修炼之道】即将上市
  2. “私有云”安全的“过渡”时期-“云朵”方案的设计思路
  3. 测试博客园Markdown 表格
  4. ITK:将两个图像相乘
  5. NDK Socket编程:面向连接的通信(tcp)
  6. spark on yarn提交任务后总是accepted以及通过yarn关闭application
  7. 神经网络Drop大法真香定律
  8. [BFS]JZOJ 4672 Graph Coloring
  9. Taro+react开发(88):taro条件渲染
  10. 正则表达式,验证字符串由:中文、数字、英文、空格组成
  11. javascript数据结构与算法---队列
  12. 斯皮尔曼相关(Spearman correlation)系数概述及其计算例
  13. 【神经网络】综合篇——人工神经网络、卷积神经网络、循环神经网络、生成对抗网络
  14. VR渲染和CR渲染同样文件的真实对比(附CR渲染参数)
  15. 张驰课堂:六西格玛黑带认证的含金量由谁决定?
  16. CAD梦想画图中的“绘图工具——圆弧”
  17. delphi cef写入html,Delphi XE 10.2.3使用CEF4Delphi取网页元素时碰到nbsp;变问号?的处理...
  18. ES6对数组进行正序和倒序排列
  19. html5星际,纯原版复刻 牛人打造星际争霸HTML5版
  20. C++判断一个数是不是质数

热门文章

  1. 如何处理用代码创建SD Sales order时遇到的错误消息KI 180
  2. JXJJOI2018_T1_market
  3. centos7安装配置pgAgent
  4. 《精通 ASP.NET MVC 3 框架(第三版)》----第2章 准备工作 2.1 准备工作站
  5. 第二课 , 启动 ./start-all.sh
  6. 开源 免费 java CMS - FreeCMS1.9 全文检索
  7. 使用Depth Texture
  8. include和require的区别
  9. MySQL两主多从,且故障转移配置
  10. VIRTUAL COMMUNITY INFORMATICS