书籍详情
算法之禅:递推与递归
作者:刘铁猛
出版社:中国水利水电出版社
出版时间:2020-10-01
ISBN:9787517089346
定价:¥68.00
购买这本书可以去
内容简介
算法是个有趣的东西—针对某个问题设计算法的时候,不会的人感觉像“大海捞针”,而会的人则感觉像“一苇渡江”。高手的头脑里都有一张“算法地图”,算法之间不是孤立的,而是彼此连通的。算法之间的内在联系有很多,但挖掘到根源上,就是递推与递归两种思想。本书从深度解析递推和递归这两个基本算法思想开始,用它们贯穿起了《算法导论》中的几十个经典算法,包括排序、查找、回溯、贪心、分治、动态规划、图算法等。 本书成稿自作者的教案,秉承了作者一贯的风趣幽默又不失严谨的写作风格,同时融入了学习心理学和认知科学的实践原理。作者的诸多学生在参加完以本书内容为蓝本的集训后进入了微软、脸书、亚马逊、领英、甲骨文等公司,所以本书是经过千锤百炼的一线教学成果。本书适合于所有想通过学习算法来精进自己编程能力的读者。为了倾听读者们的心声、不断完善这本书,作者热切地期待大家与他在领英上建立联系。在那里,作者还将源源不断地与读者们分享种类教学资源和工作机会。作者的领英首页是https:www.linkedin.cominhexagons。
作者简介
刘铁猛,高级软件工程师,技术作者、译者、教育者,现就职于亚马逊(美国)。曾就职于微软(美国),著有《深入浅出WPF》一书,销量数万册。精心制作的《C#语言入门详解》视频课程点击量超500万次,是目前全球排名*一的中文C#教程。他的多套视频教学已被微软收录为官方认证课程。他的所有作品风格一致:内容详实准确、语言风趣幽默、说理深入浅出,被学习者们奉为佳作。
目录
致谢
一夜春风,万树梨花
第00章 开篇绪言
缘起 1
预备知识 3
第01章 思想与实现
思想 6
实现 8
准备一棵树 9
用递推代码实现递推思想 11
用递归代码实现递推思想 13
用递归代码实现递归思想 15
“好”的递归与“坏”的递归 16
用递推代码实现递归思想 20
思考题 23
第02章 回溯:上古神话中的算法
回溯式递归的基本原理 24
示例1 25
示例2 26
神话故事中的算法 27
迷宫设计入门 28
探寻迷宫中的路径 29
用递推(循环)代码实现回溯 32
思考题 33
第03章 动态规划:动机决定性质
什么是动态规划 35
透彻理解动态规划 36
递推版动态规划 37
递归版动态规划 39
陷阱:这不是动态规划! 42
贪心也要动脑子 43
更上层楼:让规划“动态”起来 46
切年糕 46
接订单 48
听讲座 56
思考题 60
动态规划哲思 60
第04章 排序:算法皇冠上的明珠
游乐园:O(n^2)的简单排序们 63
选择排序 63
冒泡排序 64
插入排序 66
以空间换时间:归并排序 66
看运气的快速排序 68
两全其美:堆排序 71
什么是“堆” 71
构建大/小根堆 72
利用“大根堆”进行原地排序 75
利用“小根堆”生成升序数组 75
思考题 76
第05章 查找:来而不往非礼也
二分查找 78
在已排序的数组上 79
在平衡二叉搜索树上 80
线段树:化繁为简 81
构建线段树 82
查询子段和 84
字典树:字母大接龙 86
递推版实现 87
递归版实现 89
并查集:朋友的朋友是朋友 90
第06章 图:包罗万象
图的表达 94
邻接列表 95
邻接矩阵 97
应对向、权、环的变化 98
思考题 100
图的遍历 100
广度优先遍历 101
深度优先遍历 103
递推版深度优先遍历 105
向、权、环对遍历的影响 106
顶点的连通性 107
有无权重对连通性的影响 109
有无向对连通性的影响 110
环对连通性的影响 113
强连通性组件 113
Kosaraju-Sharir算法 114
图上的路径 116
BFS式路径搜寻 118
DFS式路径搜寻 119
自底向上式路径搜寻 119
回溯式路径搜寻 121
获取环路 122
思考题 123
短路径 124
Dijkstra短路径算法 125
Bellman-Ford短路径算法 129
Floyd-Warshall短路径算法 131
小生成树 133
构建有权无向图 134
Prim算法 136
Kruskal算法 137
流:超时空移花接木 138
余量边,反向边,余量网络,增益路径 139
容量返还 140
Ford-Fulkerson算法实现 143
小割:流量的瓶颈 145
拓扑排序 147
生成入度图与出度图 148
理解顶点的入度 149
递推实现 150
递归实现 151
思考题 152
后记
一夜春风,万树梨花
第00章 开篇绪言
缘起 1
预备知识 3
第01章 思想与实现
思想 6
实现 8
准备一棵树 9
用递推代码实现递推思想 11
用递归代码实现递推思想 13
用递归代码实现递归思想 15
“好”的递归与“坏”的递归 16
用递推代码实现递归思想 20
思考题 23
第02章 回溯:上古神话中的算法
回溯式递归的基本原理 24
示例1 25
示例2 26
神话故事中的算法 27
迷宫设计入门 28
探寻迷宫中的路径 29
用递推(循环)代码实现回溯 32
思考题 33
第03章 动态规划:动机决定性质
什么是动态规划 35
透彻理解动态规划 36
递推版动态规划 37
递归版动态规划 39
陷阱:这不是动态规划! 42
贪心也要动脑子 43
更上层楼:让规划“动态”起来 46
切年糕 46
接订单 48
听讲座 56
思考题 60
动态规划哲思 60
第04章 排序:算法皇冠上的明珠
游乐园:O(n^2)的简单排序们 63
选择排序 63
冒泡排序 64
插入排序 66
以空间换时间:归并排序 66
看运气的快速排序 68
两全其美:堆排序 71
什么是“堆” 71
构建大/小根堆 72
利用“大根堆”进行原地排序 75
利用“小根堆”生成升序数组 75
思考题 76
第05章 查找:来而不往非礼也
二分查找 78
在已排序的数组上 79
在平衡二叉搜索树上 80
线段树:化繁为简 81
构建线段树 82
查询子段和 84
字典树:字母大接龙 86
递推版实现 87
递归版实现 89
并查集:朋友的朋友是朋友 90
第06章 图:包罗万象
图的表达 94
邻接列表 95
邻接矩阵 97
应对向、权、环的变化 98
思考题 100
图的遍历 100
广度优先遍历 101
深度优先遍历 103
递推版深度优先遍历 105
向、权、环对遍历的影响 106
顶点的连通性 107
有无权重对连通性的影响 109
有无向对连通性的影响 110
环对连通性的影响 113
强连通性组件 113
Kosaraju-Sharir算法 114
图上的路径 116
BFS式路径搜寻 118
DFS式路径搜寻 119
自底向上式路径搜寻 119
回溯式路径搜寻 121
获取环路 122
思考题 123
短路径 124
Dijkstra短路径算法 125
Bellman-Ford短路径算法 129
Floyd-Warshall短路径算法 131
小生成树 133
构建有权无向图 134
Prim算法 136
Kruskal算法 137
流:超时空移花接木 138
余量边,反向边,余量网络,增益路径 139
容量返还 140
Ford-Fulkerson算法实现 143
小割:流量的瓶颈 145
拓扑排序 147
生成入度图与出度图 148
理解顶点的入度 149
递推实现 150
递归实现 151
思考题 152
后记
猜您喜欢