你也能看得懂的 Python 算法书 PDF 文档
编程的核心是算法,学习算法不仅能教会你解决问题的方法,而且还能为你今后的发展提供一种可能。本书面向算法初学者,首先介绍当下流程的编程语言 Python,详细讲解 Python 语言中的变量和循序、分支、循环三大结构,以及列表和函数的使用,为之后学习算法打好基础。然后以通俗易懂的语言讲解双指针、哈希、深度优先、广度优先、回溯、贪心、动态规划和最短路径等经典算法。
本书适合有一定编程基础的算法爱好者阅读。
算法是编程的核心,就像一台计算机的 CPU,算法的好坏决定了一个系统的效率高低。
许多人认为学习编程就是学习最新的编程语言、技术和框架,其实计算机算法更重要。计算机语言和技术日新月异,但万变不离其宗的是算法。修炼好算法这门“内功”,再辅以新技术这些 招式,才能独霸 武林。这也是为什么像 Google 和 Facebook 这类大公司在面试中主要会考查算法问题的原因。
目前图书市场上关于算法的图书不少,经典的如《算法导论》。但是大多数算法图书太学术、太复杂,对于初学者来说门槛太高。学习算法本身就不是一件容易的事情,再加上复杂的场景和数学理论,会让算法的学习曲线更陡。因此本书的作者们就萌生了写一本让大家都能看懂的算法书的想法,以生动的语言把算法的思想过程写出来,让学习算法不再那么枯燥。
目录
第 1 章 编程基础
1.1 变量
1.1.1 输出和输入
1.1.2 简单变量类型
1.1.3 数学计算
1.1.4 位运算
1.1.5 使用字符串
1.2 三大结构
1.2.1 循序结构
1.2.2 分支结构
1.2.3 条件判断
1.2.4 应用分支结构
1.2.5 循环结构
1.2.6 continue 和 break
1.2.7 应用循环结构
1.2.8 结构的嵌套
1.3 列表
1.3.1 定义列表
1.3.2 对元素进行操作
1.3.3 列表的顺序
1.3.4 列表内置函数
1.3.5 截取和拼接列表
1.3.6 字符串、元组和列表
1.3.7 用循环遍历列表
1.3.8 字典简介
1.4 函数
1.4.1 定义子函数
1.4.2 主函数
1.4.3 调用函数
1.4.4 全局变量
1.4.5 函数的运用
第 2 章 双指针问题
2.1 数组合并
2.1.1 合并有序数组
2.1.2 最终代码
2.2 二分查找
2.2.1 什么是二分查找
2.2.2 问题求解
2.2.3 最终代码
2.3 链表
2.3.1 什么是单链表
2.3.2 建立单链表
2.3.3 建立双链表
2.3.4 双向输出双链表
2.3.5 向单链表中添加元素
2.3.6 向双链表中添加元素
2.3.7 删除列表中的元素
第 3 章 哈希算法
3.1 什么是哈希
3.2 两个数的和
3.2.1 问题求解 1
3.2.2 解法 1 的最终代码
3.2.3 问题求解 2
3.2.4 解法 2 的最终代码
3.3 单词模式匹配
3.3.1 问题求解
3.3.2 最终代码
3.4 猜词游戏
3.4.1 问题求解
3.4.2 最终代码
3.5 神奇的词根
3.5.1 问题求解
3.5.2 最终代码
第 4 章 深度优先遍历算法
4.1 什么是深度优先遍历
4.2 二叉树
4.2.1 二叉树的类型
4.2.2 二叉树的相关术语
4.2.3 二叉树的节点代码
4.2.4 二叉树的遍历顺序
4.2.5 深度优先遍历与广度优先遍历
4.3 怎么抓住小偷
4.3.1 解题思路
4.3.2 从思路到代码
4.4 二叉树中的最大路径和
4.4.1 解题思路
4.4.2 完整代码
4.5 最大的岛屿
4.5.1 解题思路
4.5.2 完整代码
第 5 章 广度优先遍历算法
5.1 什么是广度优先遍历
5.2 选课的智慧
5.2.1 广度优先遍历
5.2.2 问题求解
5.2.3 最终代码
5.3 寻找制高点
5.3.1 问题求解
5.3.2 集合
5.3.3 最终代码
5.4 合法的括号
5.4.1 问题求解
5.4.2 最终代码
5.5 树的右侧
5.5.1 问题求解
5.5.2 最终代码
第 6 章 回溯算法
6.1 什么是回溯
6.2 遍历所有排序方式
6.2.1 问题求解
6.2.2 最终代码
6.3 经典问题的组合
6.3.1 问题求解
6.3.2 最终代码
6.4 查找单词问题
6.4.1 问题求解
6.4.2 最终代码
6.5 八皇后问题
6.5.1 问题求解
6.5.2 最终代码
6.6 教你解数独
6.6.1 问题求解
6.6.2 最终代码
第 7 章 贪心算法
7.1 硬币找零问题
7.1.1 问题描述
7.1.2 最终代码
7.2 活动安排问题
7.2.1 问题描述
7.2.2 最终代码
7.3 哈夫曼编码
7.3.1 问题描述
7.3.2 哈夫曼树
7.3.3 贪心选择性质
7.3.4 最优子结构性质
7.3.5 最终代码
第 8 章 动态规划算法
8.1 爬楼梯问题
8.1.1 问题描述
8.1.2 最终代码
8.2 矿工挖矿问题
8.2.1 问题描述
8.2.2 最终代码
8.3 背包问题
8.3.1 问题描述
8.3.2 问题实例
8.3.3 最终代码
8.4 最长递归子序列问题
8.4.1 问题描述
8.4.2 改进算法
8.4.3 最终代码
第 9 章 最短路径问题
9.1 迪可斯特朗算法
9.1.1 术语释义
9.1.2 问题示例:最短公交线路
9.1.3 图与节点的定义
9.1.4 把图用代码“画”出来
9.1.5 算法核心:两个节点集合
9.1.6 算法核心:循环
9.1.7 输出路线
9.1.8 通过示例理解算法
9.1.9 完整代码展示
9.2 Floyd 算法
9.2.1 算法核心:两个矩阵
9.2.2 算法核心:通过中介点缩短距离
9.2.3 通过示例理解算法
9.2.4 完整代码
9.3 A*算法
9.3.1 算法核心:迪可斯特朗算法
9.3.2 算法核心:预估函数
9.3.3 算法核心:选择预估函数
9.3.4 A*算法的兄弟们
第 10 章 分治算法
10.1 什么是分治
10.2 归并排序
10.2.1 递归法与迭代法
10.2.2 递归法描述
10.2.3 迭代法描述
10.2.4 最终代码
10.3 连续子列表的最大和
10.3.1 解题思路
10.3.2 最终代码
10.4 几何问题之凸包
10.4.1 问题求解
10.4.2 最终代码
10.5 数学问题之多项式乘法
10.5.1 问题求解
10.5.2 最终代码
下载地址:https://www.wenjiangs.com/wp-content/uploads/2024/04/GdAr8M318EeHheev.zip
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论