资源详情

Hello算法(图灵出品)

Hello算法(图灵出品)-电子书下载


作者: 靳宇栋(@krahets)
出版社: 人民邮电出版社
出品方: 图灵教育
出版年: 2024-3-1
页数: 380
定价: 129.8元
装帧: 平装
ISBN: 9787115637505

下载次数:6


本站推荐

书籍资料

  • 内容简介
  • 作者介绍
  • 书籍目录
本书是备受广大读者推崇的数据结构与算法入门教程,已在GitHub获得超60k的Star,并多次登顶GitHub Trending。书中系统介绍了数据结构与算法基础、复杂度分析、数组与链表、栈与队列、哈希表、树、堆、图、搜索、排序、分治、回溯、动态规划和贪心算法等核心知识,通过清晰易懂的解释和丰富的代码示例,以及生动形象的全彩插图和在线动画图解,揭示算法工作原理和数据结构底层实现,教授读者如何选择和设计最优算法来解决不同类型的问题,切实提升编程技能,构建完整的数据结构与算法知识体系。
编辑推荐
动画图解:重点和难点知识通过动画以图解形式展示,内容清晰易懂、学习曲线平滑,引导初学者探索数据结构与算法的知识地图。
一键运行:源代码可一键运行,帮助读者在练习中提升编程技能,了解算法工作原理和数据结构底层实现。
配套齐全:附赠源代码、思维导图和书签。
靳宇栋(@krahets)
前华为高级算法工程师,上海交通大学硕士,西安交通大学本科,专注于3D重建与渲染、3D生成算法的研究。曾获VEX机器人世界锦标赛冠军、全球人工智能创新大赛一等奖。喜欢在开源社区分享知识,作品的GitHub Star超60,000,订阅人数超460,000。

前言
第1章初识算法1
1.1算法无处不在1
1.2算法是什么5
1.2.1算法定义5
1.2.2数据结构定义5
1.2.3数据结构与算法的关系5
1.3小结7
第2章复杂度分析9
2.1算法效率评估9
2.1.1实际测试9
2.1.2理论估算10
2.2迭代与递归10
2.2.1迭代11
2.2.2递归13
2.2.3两者对比18
2.3时间复杂度19
2.3.1统计时间增长趋势20
2.3.2函数渐近上界21
2.3.3推算方法22
2.3.4常见类型23
2.3.5最差、最佳、平均时间复杂度30
2.4空间复杂度32
2.4.1算法相关空间32
2.4.2推算方法33
2.4.3常见类型34
2.4.4权衡时间与空间38
2.5小结39
第3章数据结构42
3.1数据结构分类42
3.1.1逻辑结构:线性与非线性42

3.1.2物理结构:连续与分散43
3.2基本数据类型45
3.3数字编码*46
3.3.1原码、反码和补码46
3.3.2浮点数编码49
3.4字符编码*50
3.4.1ASCII字符集50
3.4.2GBK字符集51
3.4.3Unicode字符集51
3.4.4UTF-8编码53
3.4.5编程语言的字符编码54
3.5小结55
第4章数组与链表58
4.1数组58
4.1.1数组常用操作58
4.1.2数组的优点与局限性62
4.1.3数组典型应用63
4.2链表63
4.2.1链表常用操作64
4.2.2数组与链表对比67
4.2.3常见链表类型67
4.2.4链表典型应用68
4.3列表69
4.3.1列表常用操作69
4.3.2列表实现71
4.4内存与缓存*73
4.4.1计算机存储设备73
4.4.2数据结构的内存效率75
4.4.3数据结构的缓存效率75
4.5小结76
第5章栈与队列81
5.1栈81
5.1.1栈的常用操作81
5.1.2栈的实现82
5.1.3两种实现对比86
5.1.4栈的典型应用87
5.2队列87
5.2.1队列常用操作88
5.2.2队列实现89
5.2.3队列典型应用94
5.3双向队列95
5.3.1双向队列常用操作95
5.3.2双向队列实现*96
5.3.3双向队列应用104
5.4小结104
第6章哈希表107
6.1哈希表107
6.1.1哈希表常用操作108
6.1.2哈希表简单实现109
6.1.3哈希冲突与扩容111
6.2哈希冲突113
6.2.1链式地址113
6.2.2开放寻址116
6.2.3编程语言的选择120
6.3哈希算法120
6.3.1哈希算法的目标121
6.3.2哈希算法的设计122
6.3.3常见哈希算法124
6.3.4数据结构的哈希值124
6.4小结125
第7章树129
7.1二叉树129
7.1.1二叉树常见术语129
7.1.2二叉树基本操作131
7.1.3常见二叉树类型132
7.1.4二叉树的退化134
7.2二叉树遍历135
7.2.1层序遍历135
7.2.2前序、中序、后序遍历136
7.3二叉树数组表示138
7.3.1表示完美二叉树138
7.3.2表示任意二叉树139
7.3.3优点与局限性142
7.4二叉搜索树142
7.4.1二叉搜索树的操作143
7.4.2二叉搜索树的效率151
7.4.3二叉搜索树常见应用151
7.5AVL树*152
7.5.1AVL树常见术语153
7.5.2AVL树旋转154
7.5.3AVL树常用操作160
7.5.4AVL树典型应用161
7.6小结162
第8章堆165
8.1堆165
8.1.1堆的常用操作166
8.1.2堆的实现167
8.1.3堆的常见应用177
8.2建堆操作177
8.2.1借助入堆操作实现177
8.2.2通过遍历堆化实现178
8.2.3复杂度分析178
8.3Top-k问题180
8.3.1方法一:遍历选择180
8.3.2方法二:排序180
8.3.3方法三:堆181
8.4小结182
第9章图184
9.1图184
9.1.1图的常见类型与术语185
9.1.2图的表示186
9.1.3图的常见应用188
9.2图的基础操作188
9.2.1基于邻接矩阵的实现188
9.2.2基于邻接表的实现192
9.2.3效率对比196
9.3图的遍历196
9.3.1广度优先遍历196
9.3.2深度优先遍历198
9.4小结200
第10章搜索203
10.1二分查找203
10.1.1区间表示方法207
10.1.2优点与局限性208
10.2二分查找插入点209
10.2.1无重复元素的情况209
10.2.2存在重复元素的情况210
10.3二分查找边界212
10.3.1查找左边界212
10.3.2查找右边界212
10.4哈希优化策略214
10.4.1线性查找:以时间换空间214
10.4.2哈希查找:以空间换时间215
10.5重识搜索算法217
10.5.1暴力搜索217
10.5.2自适应搜索218
10.5.3搜索方法选取218
10.6小结220
第11章排序222
11.1排序算法222
11.1.1评价维度222
11.1.2理想排序算法223
11.2选择排序224
11.3冒泡排序229
11.3.1算法流程231
11.3.2效率优化232
11.3.3算法特性233
11.4插入排序233
11.4.1算法流程234
11.4.2算法特性235
11.4.3插入排序的优势235
11.5快速排序235
11.5.1算法流程239
11.5.2算法特性240
11.5.3快速排序为什么快240
11.5.4基准数优化241
11.5.5尾递归优化242
11.6归并排序242
11.6.1算法流程243
11.6.2算法特性248
11.6.3链表排序248
11.7堆排序249
11.7.1算法流程249
11.7.2算法特性250
11.8桶排序250
11.8.1算法流程251
11.8.2算法特性252
11.8.3如何实现平均分配252
11.9计数排序253
11.9.1简单实现254
11.9.2完整实现255
11.9.3算法特性256
11.9.4局限性256
11.10基数排序257
11.10.1算法流程257
11.10.2算法特性259
11.11小结259
第12章分治263
12.1分治算法263
12.1.1如何判断分治问题264
12.1.2通过分治提升效率264
12.1.3分治常见应用266
12.2分治搜索策略267
12.3构建二叉树问题269
12.4汉诺塔问题273
12.5小结280
第13章回溯282
13.1回溯算法282
13.1.1尝试与回退283
13.1.2剪枝288
13.1.3框架代码289
13.1.4常用术语291
13.1.5优点与局限性291
13.1.6回溯典型例题292
13.2全排列问题292
13.2.1无相等元素的情况293
13.2.2考虑相等元素的情况295
13.3子集和问题298
13.3.1无重复元素的情况298
13.3.2考虑重复元素的情况302
13.4n皇后问题304
13.5小结308
第14章动态规划310
14.1初探动态规划310
14.1.1方法一:暴力搜索311
14.1.2方法二:记忆化搜索313
14.1.3方法三:动态规划314
14.1.4空间优化316
14.2动态规划问题特性316
14.2.1最优子结构316
14.2.2无后效性319
14.3动态规划解题思路321
14.3.1问题判断321
14.3.2问题求解步骤322
14.40-1背包问题332
14.5完全背包问题343
14.5.1完全背包问题344
14.5.2零钱兑换问题I348
14.5.3零钱兑换问题II350
14.6编辑距离问题352
14.7小结356
第15章贪心359
15.1贪心算法359
15.1.1贪心算法的优点与局限性360
15.1.2贪心算法特性361
15.1.3贪心算法解题步骤362
15.1.4贪心算法典型例题363
15.2分数背包问题363
15.3最大容量问题366
15.4最大切分乘积问题373
15.5小结377
附录A术语表379