猜你喜欢
Python常用算法手册

Python常用算法手册

书籍作者:徐庆丰 ISBN:9787113267445
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:7245
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

算法是程序的灵魂,算法能够告诉开发者在面对一个项目功能时用什么思路去实现,有了

这个思路后,编程工作只需遵循这个思路去实现即可。本书循序渐进、由浅入深地详细讲解了

算法实现的核心技术,全书共12章,分别讲解了初步认识算法思想,枚举算法思想,递归算法

思想,分治算法思想,贪心算法思想,回溯算法思想,迭代算法思想,查找算法,排序算法,

使用算法解决数据结构问题,解决数学问题,经典算法问题。全书通过具体实例的实现过程演

练了各个知识点的具体使用流程,引领读者全面掌握算法的核心技术。


作者简介

徐庆丰,西安交通大学计算机硕士,软件工程硕士。就职于360移动端项目组,专门解决移动Android设备方面的数据加密、漏洞校验分析和加密工作。精通C、C++、Python、Java,擅长数据分析、机器学习、网络攻击、漏洞查找分析、系统安全架构和反编译。2010年,曾经率先发现微软IE7的重大漏洞,并提出了具体的补丁方案,引起微软重视,并建议加入微软MVP。

前言

从你开始学习编程的那一刻起,就注定了以后所要走的路:从编程初学者开始,依次经

历实习生、程序员、软件工程师、架构师、CTO 等职位的磨砺。当你站在职位顶峰的位置蓦

然回首,才会发现自己的成功并不是偶然,在程序员的成长之路上会有不断修改代码、寻找

并解决 Bug、不停测试程序和修改项目的经历。不可否认的是,只要你在自己的开发生涯中

稳扎稳打,并且善于总结和学习,最终将会得到可喜的收获。

选择一本合适的书

对于一名程序开发初学者来说,应如何学习并提高自己的开发技术呢?答案就是买一本

合适的程序开发书籍进行学习。但是,市面上许多面向初学者的编程书籍中大多都是基础知

识讲解,偏向于理论,读者读完以后面对实战项目时还是无从下手。如何实现从理论过渡到

项目实战,是初学者迫切需要了解的;鉴于此,笔者梳理自己对算法的理解思路,同时加入

实践项目的经验,编写了本书,它将面向具有一定 Python 编程经验的初级程序员,讲解了

Python 算法的核心知识和技巧,这些知识能够帮助读者迅速掌握 Python 算法的精髓,编写

出更加优质的代码。

本书的特色

(1)以“入门到精通”的写作方法构建内容

为了让读者能够完全看懂书中的内容,笔者遵循“入门到精通”基础类图书的写法,循

序渐进地讲解 Python 开发语言的基本知识。

(2)实例教学,经典并深入

以实例教学为导向,通过具体实例讲解了各种算法思想的基本知识和核心用法。通过具

体实例的讲解和剖析,帮助读者真正掌握 Python 算法的核心内容。

(3)视频讲解,二维码布局全书

书中每一个二级目录下都有一个二维码,通过二维码扫描可以观看讲解视频,既包括实

例讲解也包括教程讲解,对读者的开发水平实现了拔高处理。

(4)售后答疑帮助读者快速解决学习问题

无论是书中的疑惑,还是在学习过程中遇到的问题,笔者将在第一时间为读者答疑解惑,

这也是笔者对读者的承诺。

I

文前(1).indd 1

2020-8-3 15:00:20

??

Python 常用算法手册

(5)QQ 群 + 网站论坛实现教学互动,形成互学、互帮的朋友圈

为了方便给读者答疑,笔者提供了网站论坛、QQ 群等技术支持(通过 QQ:729017304

获得) 并且随时在线与初学者互动。,让大家在互学、互帮中形成一个良好的学习编程的氛围。

整体下载包

为了方便不同网络环境的读者学习,也为了提升图书的附加价值,笔者将书中 108 个扫

码视频和源代码整理成整体下载包,读者可以通过封底二维码和下载链接获取学习。

备用网盘下载地址:https://pan.baidu.com/s/1kQH1XkWpYQ3FJMSRcl_CQg

提取码:mwsg

读者对象

本书以学习笔记的形式系统讲解了 Python 语言实践中的算法思想,旨在帮助有一定经

验的初级程序员夯实算法思维基础,并通过大量经典演练案例迅速积累经验,提升编程能力。

致谢与批评

特别感谢中国铁道版社有限公司编辑的大力支持,正是各位编辑的求是、耐心和效率,

才使得本书能够在这么短的时间内出版。另外,也十分感谢我的家人给予的巨大支持。由于

水平有限,书中存在纰漏之处在所难免,恳请读者提出宝贵的意见或建议,以便修订并使之

日臻完善。

最后感谢读者选择了这本书,更希望它能成为您编程路上的引导者,那么笔者将不胜荣

幸,祝您阅读快乐!


目录

第 1 章 初步认识算法思想

1.1 什么是算法 1

1.2 算法是程序的灵魂 3

1.3 算法的表示方法 4

1.4 Python 算法思想 6

第 2 章 枚举算法思想

2.1 枚举算法基础 11

2.2 算法演练——找出符合条件的 5 位数 12

2.3 算法演练——24 点游戏 .13

2.4 算法演练——解决熄灯问题 .19

2.5 算法演练——解决“讨厌的青蛙”问题 .23

第 3 章 递归算法思想

3.1 递归算法思想基础 27

3.2 算法演练——解决“斐波那契数列”问题 .28

3.3 算法演练——解决“汉诺塔”问题 .29

3.4 算法演练——解决“阶乘”问题 .32

3.5 算法演练——进制转换器 .33

3.6 算法演练——分解数字 .34

3.7 算法演练——解决二叉树遍历问题 .34

3.8 算法演练——最大公约数和最小公倍数 .38

第 4 章 分治算法思想

4.1 分治算法思想基础 41

4.2 算法演练——二分法找出有序列表指定值 .43

4.3 算法演练——求顺序表中数据的最大值 .45

4.4 算法演练——查找列表中元素的最小值和最大值 .46

4.5 算法演练——找出一组序列中的第 k 小(大)的元素 .48

4.6 算法演练——快速排序 .51

4.7 算法演练——实现归并排序 .53

4.8 算法演练——整数划分 .54

第 5 章 贪心算法思想

5.1 贪心算法思想基础 57

5.2 算法演练——解决“找零方案”问题 .58

5.3 算法演练——解决“汽车加油”问题 .59

5.4 算法演练——解决“求最大子元素之和问题”问题 .60

5.5 算法演练——解决“幼儿园分糖果”问题 .61

5.6 算法演练——圣诞节的礼物 .62

5.7 算法演练——解决“活动安排”问题 .64

5.8 算法演练——解决“摇摆序列”问题 .67

5.9 算法演练——移除 k 个数字 .69

5.10 算法演练——四种解决“霍夫曼编码”问题的方案 .70

5.11 算法演练——解决“Kruskal 算法”问题 .78

5.12 算法演练——解决“Prim 算法”问题 85

5.13 小结 89

第 6 章 回溯算法思想

6.1 回溯算法思想基础 90

6.2 算法演练——破解“解空间” .92

6.3 算法演练——解决“全排列”问题 .95

6.4 算法演练——解决“选排列”问题 .97

6.5 算法演练——解决“最长公共子序列(LCS)”问题 .99

6.6 算法演练——解决“排课”问题 .101

6.7 算法演练——解决“最佳作业调度”问题 .103

6.8 算法演练——解决“图的遍历”问题 .106

6.9 算法演练——解决“爬楼梯”问题 .107

6.10 算法演练——解决“m 着色”问题 .109

6.11 算法演练——解决“取物搭配”问题 . 111

6.12 算法演练——解决“旅行商”问题 . 112

6.13 算法演练——解决“野人与传教士”问题 . 114

6.14 算法演练——解决“骑士巡逻”问题 . 116

6.15 算法演练——解决“八皇后”问题的 4 种方案 . 118

6.16 算法演练——解决“迷宫”问题 .127

第 7 章 迭代算法思想

7.1 迭代算法思想基础 132

7.2 算法演练——解决“斐波那契数列”问题 .133

7.3 算法演练——解决“角谷猜想”问题 .134

7.4 算法演练——使用牛顿迭代法计算方程的根 .135

7.5 算法演练——使用牛顿迭代法求极值 .136

7.6 算法演练——使用牛顿迭代法求平方根 .138

7.7 算法演练——使用牛顿迭代法求极值并绘制曲线 .140

7.8 算法演练——使用牛顿迭代法求解输入的方程 .142

7.9 算法演练——求方程在 x 附近的一个实根 .144

7.10 算法演练——解决“非线程方程组”问题 .144

7.11 算法演练——使用雅克比 (Jacobi) 迭代法求解线性方程组 146

7.12 算法演练——使用 Gauss-Seidel 迭代法求解线性方程组148

第 8 章 查找算法

8.1 查找算法基础 153

8.2 线性表查找:顺序查找 154

8.3 线性表查找:折半查找算法 157

8.4 线性表查找:插值查找算法 161

8.5 线性表查找:分块查找算法 162

8.6 基于树的查找法:二叉排序树算法 167

8.7 基于树的查找法:平衡二叉排序树算法 173

8.8 哈希查找算法 182

8.9 斐波那契查找算法 188

8.10 红黑树(Red-Black Tree)查找算法 .192

第 9 章 排序算法

9.1 排序基础 202

9.2 插入排序算法 203

9.3 希尔排序 208

9.4 交换类排序:冒泡排序算法 211

9.5 交换类排序:快速排序算法 215

9.6 选择排序算法 217

9.7 堆排序算法 222

9.8 归并排序算法 228

9.9 基数排序算法 236

9.10 综合比较各种排序方法 239

第 10 章 使用算法解决数据结构问题

10.1 约瑟夫环 241

10.2 操作顺序表 244

10.3 操作链表 246

10.4 带有尾结点引用的单链表 248

10.5使用多叉树寻找最短路径 250

10.6树操作 251

第 11 章 解决数学问题

11.1 一段神奇的字符 260

11.21000 以内的完全数 .261

11.3多进程验证哥德巴赫猜想 263

11.4 亲密数 266

11.5解决自守数问题 267

11.6矩阵运算 267

11.7一元多项式运算 269

11.8素数问题 271

第 12 章 经典算法问题

12.1借书方案 279

12.2捕鱼和分鱼 280

12.3出售金鱼 281

12.4平分七筐鱼 282

12.5五家共井问题 283

12.6三色球问题 284

12.7计算年龄 285

12.8常胜将军问题 287

12.9三色旗问题 288



短评

感觉还不错 是想要的那本书 正在使用

2020-09-21 22:24:46

产品特色