漫画算法2:小灰的算法进阶pdf下载pdf下载

漫画算法2:小灰的算法进阶百度网盘pdf下载

作者:
简介:本篇主要提供漫画算法2:小灰的算法进阶pdf下载
出版社:电子工业出版社
出版时间:2021-05
pdf下载价格:9.00¥


预览


内容介绍

产品特色

编辑推荐

《漫画算法:小灰的算法之旅》续作,新增红黑树、图、KPM、希尔排序等高阶数据结构与算法,并有更多面试实战题。

@stormzhang帅张、《labuladong的算法小抄》作者、@敖太子三丙、@纯洁的微笑人气号主力荐

《漫画算法:小灰的算法进阶》中小灰的算法故事给算法这颗“炮弹”包上了“糖衣”,让算法的威力潜藏于内,外表不再吓人,萌萌哒Q弹可爱。

和一群快乐的小仓鼠共同领悟算法思想、理解算法对内存空间和性能的影响,并开动脑筋去寻求解决问题的高效方案。


内容简介

本书是《漫画算法:小灰的算法之旅》的续作,通过主人公小灰的心路历程,用漫画的形式讲述了多个数据结构、算法及复杂多变的算法面试题目。

第1章介绍了几种典型的排序算法,包括选择排序、插入排序、希尔排序、归并排序、基数排序。

第2章介绍了“树”结构的高级应用,包括二叉查找树、AVL树、红黑树、B树和B+树。

第3章介绍了“图”结构的概念,以及深度优先遍历、广度优先遍历、单源最短路径、多源最短路径算法。

第4章介绍了“查找”相关的算法和数据结构,包括二分查找算法、RK算法、KMP算法,以及“跳表”这种用于高效查找的数据结构。

第5章介绍了多种职场上流行的算法面试题目及详细的解题思路,例如螺旋遍历二维数组、寻找数组中第k大元素、求股票交易的更大收益等。


作者简介

魏梦舒(@程序员小灰):微信公众号“程序员小灰”的作者,多年软件行业从业经验,先后在京东金融和摩拜科技从事研发工作,对算法有一定的兴趣和经验。


精彩书评

大咖力荐

在算法和数据结构领域,小灰的《漫画算法》是很好的入门图书。《漫画算法 2》在前作的基础上做了诸多的扩展和深入,内容生动有趣,强烈建议想学习算法的朋友们看看这本书。

stormzhang,同名公众号作者,超人气博主,前技术&产品人,创业者

俗话说:程序 = 数据结构 + 算法,虽然日常工作大多是业务开发,很少直接接触算法,但是底层API离不开巧妙的算法设计。在这本《漫画算法》的续作中,几只可爱的小仓鼠通俗易懂地介绍了常用的数据结构和算法,可帮助你对编程有更深入的理解。

付东来(@labuladong),畅销书《labuladong的算法小抄》作者

算法本身是很枯燥的,我本人对应试教育式的刷题这种方式也不是很喜欢,但是小灰做到了漫画和知识点的结合,让学习和娱乐相结合,同时降低了学习算法的门槛。不管是入门级的新手还是职场老手,都可以阅读一下。毕竟这是一个算法为王的年代,我相信算法的重要性随着时间的推移会越来越明显,我也相信大家都能从本书学到不少算法知识。

周凌云,微信公众号(三太子敖丙)作者

程序员小灰一直耕耘在漫画算法这个领域,积累多年经验尽心出版的《漫画算法》系列书籍,让大家以轻松有趣的方式快速掌握算法,同时这本书的实战性也很强。

张强,微信公众号(纯洁的微笑)作者


目录

第1章 排序算法进阶 / 1

1.1 新的开始 / 1

1.2 什么是选择排序 / 3

1.2.1 如何减少比较次数 / 3

1.2.2 选择排序的实现 / 8

1.3 什么是插入排序 / 10

1.3.1 扑克牌中的排序算法 / 10

1.3.2 插入排序的优化 / 14

1.4 什么是希尔排序 / 16

1.4.1 插入排序的升级 / 16

1.4.2 希尔排序的优化 / 20

1.5 什么是归并排序 / 22

1.5.1 擂台上的排序算法 / 22

1.5.2 归并排序的具体操作 / 25

1.6 什么是基数排序 / 29

1.6.1 另一种线性排序算法 / 29

1.6.2 解决对齐问题 / 33

1.7 小结 / 35

第2章 树的进阶 / 37

2.1 什么是二叉查找树 / 37

2.1.1 二叉树查找树的特性 / 37

2.1.2 二叉查找树的插入和删除 / 40

2.1.3 二叉查找树的缺陷 / 45

2.2 什么是平衡二叉树 / 47

2.2.1 平衡因子和旋转 / 47

2.2.2 平衡二叉树的插入和删除 / 53

2.3 什么是红黑树 / 58

2.3.1 另一种自平衡方式 / 58

2.3.2 红黑树的插入 / 62

2.3.3 红黑树的删除 / 68

2.3.4 红黑树的实践和应用场景 / 76

2.4 什么是B树和B+树 / 79

2.4.1 数据库的索引 / 79

2.4.2 什么是B树 / 81

2.4.3 什么是B+树 / 88

2.5 小结 / 90

第3章 图 / 91

3.1 什么是图 / 91

3.1.1 图的基本概念 / 91

3.1.2 图的存储方式 / 95

3.2 图的遍历 / 97

3.2.1 深度优先和广度优先 / 97

3.2.2 遍历的具体实现 / 101

3.3 图的最短路径 / 107

3.3.1 什么是迪杰斯特拉算法 / 107

3.3.2 迪杰斯特拉算法的原理 / 111

3.3.3 如何得到完整路径 / 116

3.4 图的多源最短路径 / 125

3.5 小结 / 132

第4章 查找算法 / 133

4.1 引言 / 133

4.2 什么是二分查找 / 135

4.2.1 一个特殊的游戏 / 135

4.2.2 二分查找的原理 / 138

4.3 什么是跳表 / 141

4.3.1 链表能做二分查找吗 / 141

4.3.2 跳表的插入与删除 / 146

4.4 什么是字符串匹配算法 / 155

4.4.1 朴素的字符串匹配 / 155

4.4.2 朴素字符串匹配的改进 / 158

4.5 什么是KMP算法 / 164

4.5.1 无谓的字符比较 / 164

4.5.2 KMP算法的原理 / 166

4.6 小结 / 176

第5章 面试中的算法 / 177

5.1 踌躇满志的小灰 / 177

5.2 如何螺旋遍历二维数组 / 179

5.2.1 第一次交锋 / 179

5.2.2 解题思路 / 181

5.3 两数之和与三数之和 / 187

5.3.1 再接再厉 / 187

5.3.2 解题思路 / 189

5.3.3 问题的扩展 / 194

5.4 数组中的第k个最大元素 / 201

5.4.1 一道数组相关的题目 / 201

5.4.2 解题思路 / 204

5.5 链表的倒数第k个节点 / 210

5.5.1 一道链表相关的题目 / 210

5.5.2 解题思路 / 212

5.6 千变万化的股票交易问题 / 216

5.6.1 如何获得最大收益 / 216

5.6.2 解题思路 / 218

5.6.3 题目变形:买卖次数不限 / 220

5.6.4 题目再变形:2次买卖 / 221

5.6.5 最后的胜利 / 233

5.7 结束也是开始 / 235


前言/序言

许多程序员对算法望而生畏,认为算法是一项高深莫测且枯燥的学问。

算法真的有那么难,真的有那么无趣吗?

恰恰相反,算法是编程领域最有意思的一块内容,也并没有许多人想象的那样难以驾驭。

学习算法,我们不需要去死记硬背那些冗长复杂的背景知识、底层原理、指令语法……我们所需要的只有对算法思想的领悟、对空间和性能的理解、开动脑筋去寻求最佳的解决方案。相比编程领域的其他技术,算法更纯粹,更接近数学,也更具有趣味性。

我一直希望写出一些东西,让更多的IT同行们能够领略到算法的魅力,于是在2016年9月,我创造了一个初出茅庐的菜鸟程序员形象,这个菜鸟程序员名叫小灰。

程序员小灰的故事活跃在微信公众号上,用漫画的形式诉说着他的一次又一次面试经历,倔强的小灰屡战屡败,屡败屡战。小灰是我本人刚刚入行时的真实写照,相信许多程序员小伙伴们也能从中看到自己的影子。

2019年5月,程序员小灰的故事从微信公众号搬到了纸质的图书上,这本书叫作《漫画算法》。这本书一出来,就成为了当年的IT畅销书。能让更多行业同仁看到小灰的故事,我感到十分欣慰。

《漫画算法》的内容定位是“入门”级别,里面讲解的是相对基础的算法和数据结构知识,至于相对复杂的知识点,比如红黑树、图、KMP算法等就没有涉及。许多读者看完这本书,难免有些意犹未尽的感觉。

于是,为了让大家更全面深入地了解相关知识,我开始了《漫画算法2》的创作,让小灰和大黄的有趣故事得以延续,也让读者们的算法学习之路有新的起点。

本书特色

这本书通过漫画的形式,讲述了小灰学习算法和数据结构知识的心路历程。书中许多内容源于本人的微信公众号,但是比公众号的内容更加系统,更加全面,也更加严谨。

本书是基于前作《漫画算法》的续作。完全没有相关基础的小伙伴可以先看看《漫画算法》这本书,从而对算法和数据结构有一个基本的认识。

有一定基础的小伙伴可以从这本《漫画算法2》当中学到更多的算法,比如希尔排序算法、KMP算法,也可以学到更丰富的数据结构,比如红黑树、跳表,还可以了解更多的算法面试题目,比如螺旋遍历二维数组、股票最大收益问题等。

这不是一本编程入门书。对于在编程方面完全零基础的读者,建议先了解一些Java语言的基础。不过,算法思想是相通的,如果你掌握的是其他编程语言,也不难看懂其中的算法和数据结构知识。

勘误和支持

除书中所提供的代码示例以外,大家也可以关注微信公众号“程序员小灰”,在后台回复“漫画算法2”,获得全书完整的、可运行的代码。为了保证代码的简洁,在部分代码实现中省略了烦琐的参数判空和验证逻辑。

由于作者水平有限,书中难免会出现一些错误,恳请广大读者批评指正。读者如果在阅读过程中产生疑问或发现Bug,欢迎随时到微信公众号的后台留言。

致谢

感谢微信公众号“程序员小灰”的读者。你们的鼓励和支持,给了我坚持创作的动力。

感谢朴提、单耳和康慧三位插画师所画的精彩插画,是你们让小灰的形象更丰满、更可爱。感谢为本书审稿的杨道谈先生,感谢在百忙之中阅读书稿并写书评的专家们,他们是张奇、付东来、周凌云、张强。

特别感谢我的父母,是他们把我带进了数学的大门。在我上小学的时候,是他们的坚持,我才有机会学习奥数,参加数学竞赛,并对数学和逻辑产生了兴趣。在这本书的写作过程中,又是他们辛苦努力屏蔽生活琐事对我的干扰,让我能够全身心地投入到本书的写作当中。

谨以此书献给我的家人、我的读者,以及热爱编程的朋友们!

魏梦舒,微信公众号“程序号小灰”的作者