豆瓣评分 9.4 的算法巨著,这本书带无数读者入门算法
Posted AI科技大本营
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了豆瓣评分 9.4 的算法巨著,这本书带无数读者入门算法相关的知识,希望对你有一定的参考价值。
说到算法巨著,你可能想到的是《算法导论》这本经典。但在入门算法时,还有一本与之比肩的巨著,不得不提,它就是《算法(第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
康奈尔大学博士,普林斯顿大学计算机科学系高级讲师,研究方向包括算法的设计、分析和实现,特别是图和离散优化。
文末赠书
文末小福利,评论区说说你看过哪本算法书,收获如何?或者已经看过这本书的小伙伴可以一句话推荐一下这本书。本期将选取 3 位送上珍贵的《算法(第4版)》一本。截止时间:2021.8.13 14:00
以上是关于豆瓣评分 9.4 的算法巨著,这本书带无数读者入门算法的主要内容,如果未能解决你的问题,请参考以下文章
每日一书|豆瓣评分9.3,陪伴无数程序员成长的神作,终于升级了
[留言送书]豆瓣评分 9.3,陪伴无数程序员成长的神作,终于升级了!