Python中文网

Python算法详解

cnpython619

编程书籍推荐:Python算法详解,由人民邮电出版社2019-06-01月出版,本书发行作者信息: 张玲玲 著此次为第1次发行, 国际标准书号为:9787115503381,品牌为异步图书, 这本书采用平装开本为16开,附件信息:未知,纸张采为胶版纸,全书共有350页字数万 字,值得推荐的Python Book。

此书内容摘要

内 容 提 要
本书循序渐进、由浅入深地讲解Python算法的核心技术,并通过具体实例的实现过程演练各个知识点的具体使用流程。全书共13章,包括算法,数据结构,常用的算法思想、线性表、队列和栈,树,图,查找算法,内部排序算法,经典的数据结构问题,数学问题的解决,经典算法问题的解决,图像问题的解决,游戏和算法等内容。
本书不但适合研究和学习算法的初学者,也适合有一定算法基础的读者,还可以作为大中专院校相关专业师生的学习用书和培训学校的教材。

关于此书作者

张玲玲,10年C/C++开发经验,6年Python开发经验,计算机硕士,杰出程序员和算法专家,在算法研究和应用上很有心得,曾经开发过众多的游戏应用、系统软件的。业余期间,曾经在国内主流期刊中发表过多篇算法领域的杰出论文。

编辑们的推荐

- 以“从入门到精通”的写作方法构建内容,让读者入门容易。
为了使读者能够完全看懂本书的内容,本书遵循“从入门到精通”基础类图书的写法,循序渐进地讲解算法的知识。
- 破解语言难点,以“技术解惑”贯穿全书,绕过学习中的陷阱。
为了帮助读者学懂算法,每章都会有“技术解惑”模块,让读者知其然又知其所以然。
- 书中包含大量典型实例。
书中有195个实例,通过这些实例的练习,读者有更多的实践演练机会。
- 通过QQ群和网站论坛实现教学互动,形成互帮互学的朋友圈。
本书作者为了方便给读者答疑,特地提供了网站论坛、QQ群等技术支持,并且随时在线与读者互动。让大家在互学互帮中形成一个良好的学习编程的氛围。网站名称和群号,详见本书前言部分。

Python算法详解图书的目录

目录

第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.2Python语言的队列操作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.1Python中的堆操作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.12-3查找树介绍180
7.6.2红黑树介绍181
7.6.3实践演练—使用红黑树
操作数据181
7.6.4B树和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.41000以内的完全数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.4AI智能贪吃蛇游戏341
13.5AI智能五子棋游戏346

部分内容试读

暂无.

关于此书评价

暂无.

书摘内容

暂无.

Python算法详解最新最全的试读、书评、目录、简介信息由Python中文网整理提供。

上一篇:没有了

下一篇:小天才学Python(教学指导)