豆瓣评分 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
相关文章:

zabbix企业应用之监控oracle
本次介绍如何使用zabbix监控oracle,主要使用pyora这个python脚本来监控,具体地址可以参考https://github.com/bicofino/Pyora 我的zabbix版本为2.0.6,oracle为11g 下面是部分效果图 1、Oracle/Active user count 2、Oracle/Bytes sent and re…

ZendFramework的介绍、安装和实例运行
框架主要是为了提高开发效率、使得团队开发人员之间的更容易沟通和协作以及提高应用程序的可维护性。学习了解一种或多种框架对实际项目的应用会有所帮助。一、ZendFramework 的介绍:ZendFramework(以下简称:ZF),以 Model-View-Controller(MV…
input type=hidden /在IE中占空间(转)
input 的 type 设为 hidden 的话,就是隐藏域(废话)。隐藏域在页面中不显示,但可以有值。既然是“隐藏”的,怎么还说会占空间呢。这是 IE 的 bug,不过这个 bug 的出现需要一定的条件,换句话说就是…

网友:Java岗,自学一个月跳槽计算机视觉,其实入门很简单
笔者在脉脉上看到一条帖子:原来Java岗,自学一个月成功跳槽视觉算法岗。这已经不是笔者第一次看到转行成功的程序员案例了,而大家的跳槽动机基本上都离不开,发展趋势、岗位高薪、职业兴趣。计算机视觉行业真相:竞争压力…

MapReduce对交易日志进行排序的Demo(MR的二次排序)
1.日志源文件 (各个列分别是: 账户,营业额,花费,日期) zhangsan163.com 6000 0 2014-02-20 lisi163.com 2000 0 2014-02-20 lisi163.com 0 100 2014-02-20 zhangsan163.com 3000 0 2014-02-20 wangwu126.com 9000 0 2014-02-20 w…

HTTP中Get与Post的区别
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认 为:一个URL地址,它用于描述一个网络上的资源,而…

sdut AOE网上的关键路径(spfa+前向星)
http://acm.sdut.edu.cn/sdutoj/showproblem.php?pid2498&cid1304 题目描述 一个无环的有向图称为无环图(Directed Acyclic Graph),简称DAG图。 AOE(Activity On Edge)网:顾名思义,用边表示活动的网ÿ…

苹果新功能惹网友众怒,还有隐私可言吗?
编译 | 禾木木出品 | AI科技大本营(ID:rgznai100)大部分人选择 iPhone 的一大理由就是信息安全,这家公司对于个人隐私的保护一直为人称赞。最近苹果公司宣布,为了让儿童能够更加安全地上网,他们决定在iOS 15、iPADOS 15、macOS Monterey系统中…

让Ubuntu拥有SUSE一样的GRUB启动界面
SUSE的漂亮大家可能都见识过,尤其是那个Grub启动画面。我身边的朋友为了在自己的系统上也能使用SUSE的GRUB启动画面,用了一种原理比较简 单,过程比较白痴的方法:先安装SUSE,把/boot单独分区,然后把除了/boo…

计算机编程简史图
计算机编程简史图www.21kaiyun.com 21世纪开运网 算准你每天的桃花运 帮忙推广下我的网站 谢谢

HTML5 模板推荐
http://www.yundic.com/转载于:https://www.cnblogs.com/lsl8966/p/4133484.html

Windows 11 再惹“众怒”!网友:微软就是逼我去买新电脑!
整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)一般来说,不论是移动还是桌面操作系统,如若要升级版本,大多用户都不会产生过大的抵触情绪,毕竟更新往往都是为了确保用户获得最佳体验。但近来用户对微软…

刚学习了linux的DHCP 配置.呵呵.自己上来总结下.
先来看DHCP的工作原理.DHCP (Dynamic Host Configuration Protocol)下面的部分是google找的....~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~DHCP来自ITwiki,开放的信息技术大百科DHCP是Dynamic Host Configuration Protocol的…

App_Offline.htm 一个静态页面实现整站维护时统一页面
在ASP.NET 2.0 站点根目录下,只要存在 App_Offline.htm 文件,那么所有对.aspx的请求都将转向App_Offline.htm 。而且浏览器的地址栏显示的是所请求的.aspx的URL。 这样当我们的站点需要维护时,只要把App_Offline.htm 拷贝到站点根目录下即…

C++编程思想重点笔记(上)
C和C指针的最重要的区别在于:C是一种类型要求更强的语言。就void *而言,这一点表现得更加突出。C虽然不允许随便地把一个类型的指针指派给另一个类型,但允许通过void *来实现。例如: bird* b;rock* r;void* v;v r;b v; C不允许…

一行命令实现录屏,支持热键和鼠标操作,区域、帧率、格式任你选择
作者:天元浪子来源:CSDN 博客市面上的录屏工具软件有很多,基本都是窗口程序。毕竟,离开GUI的支持,设置参数、选择录像区域等操作都会变得非常困难。不过,窗口程序也并非无往不胜,即便是屏幕录像…

SMO学习笔记(二)——还原(恢复)篇之完整恢复
SQLSERVER2005恢复介绍: 三种恢复模式(一).简单恢复模式 事务日志被自动截断,不能使用日志文件进行恢复。(二).完整恢复模式 保留所有操作的完整事务日志。(三).大容量日志恢复模式 简要记录大容量操作(索引创建和大容…

linux内核map图
linux内核map图

Linux下tcpdump用法
根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供了and、 or、not等逻 辑语句来帮助过滤不必要的信息; 默认情况下&#…

终于有人站出来为程序员说话了
【CSDN 编者按】刘少山博士是《程序员》杂志的作者之一,多年来投稿了大量无人驾驶领域相关的优质内容,《新程序员》上线后,他带着自己多年来对技术行业的思考以及对程序员群体的殷切期望重新回归,希望能对大家有所启迪。作者 | 刘…

给 Windows 驱动程序安装提速
对比各种主流操作系统,在 Windows 上安装驱动程序是最直观最方便的,不仅可以通过设备管理器查看所有硬件的信息并安装驱动,在有新硬件插入时也有人性化的驱动程序安装提示和安装向导,甚至还可以在线安装驱动,这都是其他…

web标准化设计:常用的CSS命名规则
常用的CSS命名规则 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:left right center 登录条ÿ…

鲲鹏应用创新大赛山西区域赛圆满落幕,鲲鹏生态助力信创变革
鲲鹏入晋,万里腾飞,8 月 6 日,2021 鲲鹏应用创新大赛山西赛区决赛在太原圆满落幕。今年鲲鹏应用创新大赛区域赛山西赛区是山西省内数字化转型的重要赛事,经过层层选拔,共 35 个队伍进入山西赛区决赛,参加政…

视频分享网站首页:最新视频特效
2019独角兽企业重金招聘Python工程师标准>>> <!DOCTYPE> <html> <head><title></title><style>.newVideo{width:208px;height:116px;border:0px solid #000; position:relative;cursor:pointer;}.newVideoImg{position:relativ…

Metasploit攻击Oracle的环境搭建
Metasploit中关于Oracle的攻击模块默认并不完全,需要自己做一些工作。本文主要记录在搭建环境的中的一些错误(操作系统Backtrack 5)。在默认情况下使用oracle的一些攻击功能会出现类似如下错误:ary module execution completed m…

jQuery / jQuery mvc plugin
jMVC专为 Qt WRT 设计。Qt WRT 将随新版Qt发布,支持 Symbian ^3 和 Meego 设备。jMVC 采用延迟加载设计,代码分布在不同的.js文件中,调用时通过xhr加载。 在web环境中会严重影响性能,所以jMVC不适合开发web site。目前大部分web b…

【转发】什么时候该用委托,为什么要用委托,委托有什么好处
好多人一直在问:什么时候该用委托,为什么要用委托,委托有什么好处.... 看完下面的文章你将茅塞顿开..(看不懂的直接TDDTDS) 概念虽然我不喜欢讲太多 我们直接先来YY 个场景:我很喜欢打游戏,但运气不好每次打游戏都会被主管看到,朱老板不喜欢他的员工在上班的时 间打游戏,所以朱…

一位合格软件工程师应该具备怎样的工程化、交付能力?
大厂待遇高、福利也好相信很多同学都对大厂有着向往,然而现实却是......有的同学成功拿到offer进入大厂,有的同学还在为备考大厂迷茫苦恼着:我之前从未面试过,这次冒险投了字节,几乎是抱着积累经验和技术交流的心态去了…

Flex通信-Java服务端通信实例
Flex与Java通信的方式有很多种,比较常用的有以下方式: WebService:一种跨语言的在线服务,只要用特定语言写好并部署到服务器,其它语言就可以调用 HttpService:通过http请求的形式访问服务器 RmoteObject&am…

jQuery性能优化指南
1,总是从ID选择器开始继承 在jQuery中最快的选择器是ID选择器,因为它直接来自于JavaScript的getElementById()方法。 例如有一段HTML代码: <div id"content"> <form method"post" action"#"> &l…