图书介绍
Python算法详解2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- 张玲玲编著 著
- 出版社: 北京:人民邮电出版社
- ISBN:9787115503381
- 出版时间:2019
- 标注页数:350页
- 文件大小:277MB
- 文件页数:366页
- 主题词:软件工具-程序设计
PDF下载
下载说明
Python算法详解PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 算法概述1
1.1 算法的基础2
1.1.1 算法的特征2
1.1.2 何为算法2
1.2 计算机中的算法3
1.2.1 认识计算机中的算法3
1.2.2 为什么说算法是程序的灵魂4
1.3 计算机中表示算法的方法4
1.3.1 用流程图表示算法4
1.3.2 用N-S流程图表示算法6
1.3.3 用计算机语言表示算法6
1.4 学习建议6
第2章 数据结构8
2.1 使用列表9
2.1.1 列表的基本用法9
2.1.2 删除列表中的重复元素并保持顺序不变10
2.1.3 找出列表中出现次数最多的元素11
2.1.4 排序类定义的实例11
2.1.5 使用列表推导式12
2.1.6 命名切片13
2.2 使用元组14
2.2.1 创建并访问元组14
2.2.2 修改元组15
2.2.3 删除元组15
2.2.4 使用内置方法操作元组15
2.2.5 将序列分解为单独的变量16
2.2.6 将序列分解为单独的变量17
2.2.7 实现优先级队列17
2.3 使用字典19
2.3.1 创建并访问字典19
2.3.2 添加、修改、删除字典中的元素19
2.3.3 映射多个值20
2.3.4 使用OrderedDict创建有序字典21
2.3.5 获取字典中的最大值和最小值22
2.3.6 获取两个字典中相同的键值对23
2.3.7 使用函数itemgetter()对字典进行排序24
2.3.8 使用字典推导式25
2.3.9 根据记录进行分组26
2.3.10 转换并换算数据27
2.3.11 将多个映射合并为单个映射28
第3章 常用的算法思想30
3.1 枚举算法思想31
3.1.1 枚举算法基础31
3.1.2 实践演练——24点游戏31
3.1.3 实践演练——计算平方根32
3.2 递归算法思想32
3.2.1 递归算法基础33
3.2.2 实践演练——解决“斐波那契数列”问题33
3.2.3 实践演练——解决“汉诺塔”问题34
3.2.4 实践演练——解决“阶乘”问题36
3.3 分治算法思想37
3.3.1 分治算法基础38
3.3.2 实践演练——求顺序表中的最大值38
3.3.3 实践演练——判断某个元素是否在列表中38
3.3.4 实践演练——找出一组序列中第k小的元素39
3.4 贪心算法思想39
3.4.1 贪心算法基础39
3.4.2 实践演练——解决“找零”问题40
3.4.3 实践演练——解决“汽车加油”问题41
3.5 试探算法思想42
3.5.1 试探算法基础42
3.5.2 实践演练——解决“八皇后”问题42
3.5.3 实践演练——解决“迷宫”问题44
3.6 迭代算法思想45
3.6.1 迭代算法基础46
3.6.2 实践演练——解决“非线程方程组”问题46
3.7 技术解惑47
3.7.1 衡量算法的标准是什么47
3.7.2 递推和递归有什么差异48
3.7.3 总结分治算法能解决什么类型的问题48
3.7.4 分治算法的机理是什么48
3.7.5 为什么说贪婪算法并不是解决问题的最优方案48
3.7.6 回溯算法会影响算法效率吗49
3.7.7 递归算法与迭代算法有什么区别49
第4章 线性表、队列和栈50
4.1 线性表操作51
4.1.1 线性表的特性51
4.1.2 顺序表操作52
4.1.3 实践演练——实现线性表顺序存储的插入操作53
4.1.4 实践演练——实现线性表顺序存储的删除操作54
4.1.5 实践演练——顺序表的插入、检索、删除和反转操作54
4.2 链表操作57
4.2.1 什么是链表57
4.2.2 实践演练——实现完整链表操作60
4.2.3 实践演练——在链表中增加比较功能64
4.2.4 实践演练——单链表结构字符串67
4.3 先进先出的队列70
4.3.1 什么是队列71
4.3.2 Python语言的队列操作72
4.3.3 实践演练——完整的顺序队列的操作72
4.3.4 实践演练——基于列表实现的优先队列73
4.3.5 实践演练——基于堆实现的优先队列74
4.4 后进先出的栈75
4.4.1 什么是栈75
4.4.2 顺序栈76
4.4.3 链栈77
4.4.4 实践演练——实现顺序栈操作77
4.4.5 实践演练——使用顺序表方法和单链表方法实栈78
4.5 实现堆队列操作79
4.5.1 Python中的堆操作79
4.5.2 实践演练——实现二叉堆操作80
4.6 技术解惑82
4.6.1 顺序表插入操作的时间复杂度是多少82
4.6.2 顺序表删除操作的时间复杂度是多少82
4.6.3 顺序表按值查找操作的时间复杂度是多少82
4.6.4 堆和栈的区别是什么82
第5章 树84
5.1 树基础85
5.1.1 什么是树85
5.1.2 树的相关概念85
5.2 使用列表表示的树86
5.3 二叉树详解87
5.3.1 二叉树的定义87
5.3.2 二叉树的性质88
5.3.3 二叉树的存储结构88
5.3.4 实践演练——使用嵌套列表表示树90
5.3.5 实践演练——把二叉树的任何子节点当成二叉树91
5.3.6 实践演练——实现二叉搜索树查找操作93
5.3.7 实践演练——实现二叉搜索树的删除操作97
5.3.8 遍历二叉树104
5.3.9 线索二叉树107
5.4 霍夫曼树115
5.4.1 霍夫曼树基础115
5.4.2 实践演练——使用面向过程方式和面向对象方式实现霍夫曼树117
5.4.3 实践演练——实现霍夫曼树的基本操作118
5.4.4 总结霍夫曼编码的算法实现120
5.5 技术解惑120
5.5.1 树和二叉树的差别是什么120
5.5.2 二叉树和链表的效率比较121
5.5.3 如何输出二叉树中的所有路径121
第6章 图122
6.1 图的起源123
6.2 图的相关概念124
6.3 存储结构127
6.3.1 使用邻接矩阵表示图127
6.3.2 实践演练——将邻接矩阵输出成图128
6.3.3 使用邻接表表示图129
6.3.4 实践演练——使用邻接表表示图130
6.4 图的遍历131
6.4.1 深度优先搜索131
6.4.2 广度优先搜索132
6.4.3 实践演练——实现图的深度优先和广度优先搜索133
6.5 图的连通性135
6.5.1 无向图的连通分量135
6.5.2 实践演练——通过二维数组建立无向图136
6.5.3 实践演练——根据邻接矩阵绘制无向图137
6.5.4 最小生成树138
6.5.5 实践演练——实现最小生成树和拓扑序列139
6.5.6 关键路径140
6.5.7 实践演练——递归解决AOE网最长关键路径的问题141
6.6 寻求最短路径143
6.6.1 求某一顶点到其他各顶点的最短路径143
6.6.2 任意一对顶点间的最短路径145
6.6.3 实践演练——使用Dijkstra算法计算指定点到其他各顶点的路径146
6.6.4 实践演练——使用Floyd-Warshall算法计算图的最短路径147
6.6.5 实践演练——使用Bellman-Ford算法计算图的最短路径148
6.6.6 实践演练——使用Dijkstra算法解决加权的最短路径问题149
6.7 技术解惑150
6.7.1 几种最短路径算法的比较150
6.7.2 邻接矩阵与邻接表的对比152
6.7.3 比较深度优先算法和广度优先算法152
第7章 查找算法154
7.1 几个相关概念155
7.2 基于线性表的查找法155
7.2.1 顺序查找法155
7.2.2 实践演练——实现顺序查找算法156
7.2.3 折半查找法157
7.2.4 实践演练——使用折半查找法查找数据158
7.2.5 插值查找法160
7.2.6 实践演练——使用插值查找法查找指定的数据160
7.2.7 分块查找法161
7.3 基于树的查找法162
7.3.1 二叉排序树162
7.3.2 实践演练——实现二叉树的完整操作165
7.3.3 平衡二叉树167
7.3.4 实践演练——实现平衡二叉树的基本操作170
7.4 散列法174
7.4.1 散列法的基本思想174
7.4.2 构造散列函数175
7.4.3 处理冲突176
7.4.4 散列表的查找过程177
7.4.5 实践演练——使用散列表查找数据177
7.5 斐波那契查找法178
7.5.1 斐波那契查找法介绍178
7.5.2 实践演练——使用斐波那契查找法179
7.6 高级树表查找算法180
7.6.1 2-3查找树介绍180
7.6.2 红黑树介绍181
7.6.3 实践演练——使用红黑树操作数据181
7.6.4 B树和B+树185
7.6.5 实践演练——使用B树排序数据186
7.6.6 实践演练——使用B+树操作数据188
7.7 技术解惑193
7.7.1 分析查找算法的性能193
7.7.2 分析散列法的性能194
第8章 内部排序算法195
8.1 排序基础196
8.1.1 排序的目的和过程196
8.1.2 内部排序与外部排序196
8.1.3 稳定排序与不稳定排序196
8.2 插入排序算法197
8.2.1 直接插入排序197
8.2.2 实践演练——编写直接插入排序算法198
8.2.3 实践演练——使用折半插入排序算法198
8.2.4 希尔排序199
8.2.5 实践演练——使用希尔排序算法对数据进行排序199
8.2.6 实践演练——使用希尔排序处理一个列表200
8.3 交换类排序法201
8.3.1 冒泡排序(相邻比序法)201
8.3.2 快速排序201
8.3.3 实践演练——实现从大到小的冒泡排序202
8.3.4 实践演练——使用冒泡排序算法排序202
8.3.5 实践演练——实现基本的快速排列203
8.4 选择排序法204
8.4.1 直接选择排序204
8.4.2 树形选择排序204
8.4.3 堆排序205
8.4.4 实践演练——实现直接选择排序206
8.4.5 实践演练——演示选择排序的操作步骤207
8.4.6 实践演练——选择排序和Python内置函数的效率对比208
8.4.7 实践演练——使用堆排序处理数据209
8.4.8 实践演练——实现最小堆210
8.5 归并排序211
8.5.1 归并排序思想211
8.5.2 两路归并算法的思路212
8.5.3 实现归并排序212
8.5.4 实践演练——使用归并排序处理指定列表213
8.5.5 实践演练——使用归并排序处理两个列表213
8.5.6 实践演练——使用两路归并排序处理一个列表214
8.6 基数排序215
8.6.1 多关键字排序215
8.6.2 链式基数排序216
8.6.3 实践演练——使用基数排序处理随机数217
8.7 技术解惑218
8.7.1 插入排序算法的描述218
8.7.2 希尔排序和插入排序的速度比较218
8.7.3 快速排序的时间耗费218
8.7.4 堆排序与直接选择排序的区别219
8.7.5 归并排序的效率与选择方法219
8.7.6 综合比较各种排序方法219
第9章 经典的数据结构问题221
9.1 约瑟夫环222
9.1.1 问题描述222
9.1.2 算法分析222
9.1.3 具体实现222
9.2 大整数运算224
9.2.1 模拟大整数乘法的小学竖式计算过程224
9.2.2 实现大数相加运算225
9.3 顺序表的修改、查找、统计、删除、销毁操作225
9.3.1 算法分析225
9.3.2 具体实现226
9.4 实现链表的基本操作227
9.4.1 算法分析227
9.4.2 具体实现227
9.5 带有尾节点引用的单链表229
9.5.1 算法分析229
9.5.2 具体实现229
9.6 增加新功能的单链表结构字符串230
9.7 实现堆排序功能232
9.7.1 算法分析232
9.7.2 具体实现233
9.8 实现队列、链表、顺序表和循环顺序表234
9.8.1 时间复杂度分析234
9.8.2 具体实现234
9.9 基于列表实现二叉树236
9.10 实现二元表达式237
9.11 使用多叉树寻找最短路径239
9.11.1 算法分析239
9.11.2 具体实现239
9.12 实现AVL树240
9.13 使用二维数组生成有向图244
9.14 使用广度优先和深度优先遍历二叉树245
第10章 数学问题的解决248
10.1 解决一个数学问题249
10.1.1 问题描述249
10.1.2 具体实现249
10.2 使用递归算法计算两个数的乘积250
10.3 利用递归算法获取斐波那契数列前n项的值250
10.4 1000以内的完全数251
10.4.1 问题描述251
10.4.2 算法分析251
10.4.3 具体实现252
10.5 多进程验证哥德巴赫猜想253
10.5.1 问题描述253
10.5.2 算法分析253
10.5.3 具体实现253
10.6 最大公约数和最小公倍数255
10.6.1 问题描述255
10.6.2 算法分析255
10.6.3 具体实现255
10.7 亲密数255
10.7.1 问题描述255
10.7.2 算法分析256
10.7.3 具体实现256
10.8 计算10000以内的自守数256
10.8.1 问题描述256
10.8.2 算法分析256
10.8.3 具体实现257
10.9 水仙花数257
10.9.1 问题描述257
10.9.2 算法分析257
10.9.3 具体实现257
10.10 方程求解257
10.10.1 用高斯消元法解方程组258
10.10.2 用二分法解非线性方程260
10.11 求平方根261
10.11.1 使用二分法求平方根261
10.11.2 用牛顿迭代法求平方根262
10.12 矩阵运算264
10.12.1 问题描述264
10.12.2 算法分析264
10.12.3 具体实现264
10.13 一元多项式运算265
10.13.1 一元多项式求导266
10.13.2 实现多项式的加法、减法、乘法运算266
10.14 百钱买百鸡267
10.14.1 问题描述267
10.14.2 算法分析268
10.14.3 具体实现268
10.15 素数问题268
10.15.1 求1000以内的所有素数269
10.15.2 孪生素数问题269
10.15.3 金蝉素数270
10.15.4 可逆素数271
10.15.5 回文素数271
10.15.6 等差素数数列272
10.16 埃及分数式273
10.16.1 问题描述273
10.16.2 算法分析274
10.16.3 具体实现274
10.17 对正整数分解质因数274
10.17.1 问题描述274
10.17.2 算法分析274
10.17.3 具体实现274
第11章 经典算法问题的解决276
11.1 歌星大奖赛277
11.1.1 问题描述277
11.1.2 具体实现277
11.2 借书方案278
11.2.1 问题描述278
11.2.2 算法分析278
11.2.3 具体实现278
11.3 捕鱼和分鱼279
11.3.1 问题描述279
11.3.2 算法分析279
11.3.3 具体实现279
11.4 出售金鱼280
11.4.1 问题描述280
11.4.2 算法分析280
11.4.3 具体实现280
11.5 平分七筐鱼280
11.5.1 问题描述280
11.5.2 算法分析281
11.5.3 具体实现281
11.6 绳子的长度和井深281
11.6.1 问题描述281
11.6.2 算法分析282
11.6.3 具体实现282
11.7 鸡兔同笼282
11.7.1 问题描述282
11.7.2 算法分析283
11.7.3 具体实现283
11.8 汉诺塔283
11.8.1 问题描述283
11.8.2 算法分析284
11.8.3 具体实现284
11.9 马踏棋盘285
11.9.1 使用递归法285
11.9.2 贪婪、递归、迭代三种算法的对比287
11.10 三色球问题289
11.10.1 问题描述289
11.10.2 算法分析289
11.10.3 具体实现289
11.11 计算年龄290
11.11.1 问题描述290
11.12.2 算法分析290
11.11.3 具体实现290
11.12 奇数幻方问题291
11.12.1 问题描述291
11.12.2 具体实现291
11.13 常胜将军问题291
11.13.1 问题描述291
11.13.2 算法分析292
11.13.3 具体实现292
11.14 背包问题292
11.14.1 使用动态规划法解决“背包”问题292
11.14.2 使用递归法解决“背包”问题293
11.15 野人与传教士问题295
11.15.1 问题描述295
11.15.2 算法分析295
11.15.3 具体实现295
11.16 三色旗问题296
11.16.1 问题描述296
11.16.2 算法分析296
11.16.3 具体实现297
11.17 猴子分桃297
11.17.1 问题描述297
11.17.2 算法分析298
11.17.3 具体实现298
11.18 将老师随机分配到办公室298
11.18.1 问题描述298
11.18.2 具体实现299
11.19 龙的世界300
11.19.1 问题描述300
11.19.2 具体实现300
11.20 凯撒密码游戏301
11.20.1 问题描述301
11.20.2 算法分析301
11.20.3 具体实现301
第12章 图像问题303
12.1 生命游戏304
12.1.1 问题描述304
12.1.2 算法分析304
12.1.3 具体实现304
12.2 黑白棋问题306
12.2.1 问题描述306
12.2.2 算法分析307
12.2.3 具体实现307
12.3 马踏棋盘(骑士周游问题)311
12.3.1 问题描述311
12.3.2 算法分析311
12.3.3 具体实现311
12.4 井字棋问题313
12.4.1 问题描述313
12.4.2 算法分析313
12.4.3 具体实现313
12.5 用蒙特卡罗方法验证凯利公式317
12.5.1 问题描述317
12.5.2 算法分析317
12.5.3 具体实现317
12.6 绘制Hangman游戏319
12.6.1 问题描述319
12.6.2 算法分析319
12.6.3 具体实现320
第13章 游戏和算法324
13.1 开发一个俄罗斯方块游戏325
13.1.1 规划图形325
13.1.2 具体实现325
13.2 跑酷游戏332
13.3 水果连连看游戏337
13.4 AI智能贪吃蛇游戏341
13.5 AI智能五子棋游戏346
热门推荐
- 1573165.html
- 976599.html
- 3125096.html
- 3461300.html
- 1369016.html
- 2273312.html
- 2611862.html
- 3607657.html
- 717786.html
- 3099126.html
- http://www.ickdjs.cc/book_2605586.html
- http://www.ickdjs.cc/book_3018273.html
- http://www.ickdjs.cc/book_2177269.html
- http://www.ickdjs.cc/book_1419802.html
- http://www.ickdjs.cc/book_2023108.html
- http://www.ickdjs.cc/book_1285383.html
- http://www.ickdjs.cc/book_1533924.html
- http://www.ickdjs.cc/book_340036.html
- http://www.ickdjs.cc/book_3379087.html
- http://www.ickdjs.cc/book_3158523.html