python算法详解 编程语言 张玲玲 编
py爬虫程序设计编程入门零基础自学指南,python数据结构与算法入门基础教程,算法竞赛入门图书,涵盖主流的算法,算法问题的解决、图像问题的解决等内容,是一本贴近实际、即学即用的算法书
¥
34.25
4.3折
¥
79.9
全新
库存3件
作者张玲玲 编
出版社人民邮电出版社
ISBN9787115503381
出版时间2019-06
版次1
装帧平装
开本16
页数364页
字数606千字
定价79.9元
货号735_9787115503381
上书时间2024-12-07
商品详情
- 品相描述:全新
-
正版特价新书
- 商品描述
-
主编:
破解语言难点,以“技术解惑”贯穿全书,绕过学中的陷阱。
为了帮助读者学懂算法,每章会有“技术解惑”模块,让读者知其然又知其所以然。
书中包含大量实例。
书中有195个实例,通过这些实例的练,读者有更多的实践演练机会。
通过群和论坛实现互动,形成互帮互学的朋友圈。
本书作者为了方便给读者答疑,特地提供了论坛、群等技术支持,并且随时在线与读者互动。让大家在互学互帮中形成一个良好的学编程的氛围。名称和群号,详见本书前言部分。
目录:
章 算法概述 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
0章 数学问题的解决 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
1章 经典算法问题的解决 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 三旗问题 29
— 没有更多了 —
以下为对购买帮助不大的评价