商品详情
《数据结构和算法基础Python语言实现》
定价:79.00元
作者:陈良旭 编著
书号:978-7-301-31654-2
装帧:平装
出版日期:2020.12
出版社:北京大学出版社
开本:16开
页码:324
内容简介
本书首先介绍算法的概念和特点,然后介绍数据结构,再逐步深入介绍各类算法,通过解决实际问题加深理解。本书选取了近年来比较热门的语言Python作为载体,来实现算法的功能。这不但可以让读者系统地学习算法的相关知识,而且还能提高读者对Python语言的应用水平。
本书分为7章,涵盖的主要内容有算法简介、数据结构、数学相关算法、排序算法、查找算法、图相关算法、算法思想归纳。其中包含对非常多经典算法的讲解,如归并排序、快速排序、拓扑排序、二叉查找树、红黑树、最小生成树算法、最短路径算法、极大极小值算法、遗传算法等。最后通过归纳总结,让读者懂得常见算法的设计思路,能够根据实际情况选择合适的算法。
本书内容通俗易懂,例子简单有趣,注释详细,实用性强,特别适合计算机专业入门读者和进阶读者阅读,也适合计算机编程爱好者阅读。另外,本书也适合作为相关培训机构的教材使用。
作者简介
陈良旭,毕业于法国国立高等应用电子学院(ENSEA),获得计算机工程师文凭,曾在ETIS实验室研究LDPC算法。现任职于佛山珠江传媒大数据科技有限公司,从事数据分析工作,研究方向有舆情监控、数据纠错等。
目录
CONTENTS
1
第1章 从零开始学算法 1
1.1 算法基础知识 21.1.1 什么是算法 2
1.1.2 算法时间复杂度 2
1.1.3 算法空间复杂度 5
1.1.4 算法优劣比较 6
1.2 计算机中如何描述算法 61.2.1 自然语言 7
1.2.2 流程图 7
1.2.3 伪代码 8
1.2.4 挑战:这个月有多少天 8
1.3 Python概述 101.3.1 Python简介 10
1.3.2 环境搭建 11
1.3.3 开发工具介绍 15
1.3.4 单元测试 22
1.4 总结 252
第2章 数据结构 27
2.1 数组 282.1.1 定义 28
2.1.2 挑战1:海盗船生存大考验 30
2.1.3 挑战2:必胜的游戏 32
2.2 链表 372.2.1 定义 37
2.2.2 挑战:国王的继承人 43
2.3 队列 452.3.1 定义 45
2.3.2 挑战:维修报警器 48
2.4 栈 502.4.1 定义 51
2.4.2 挑战1:和机器人做朋友 52
2.4.3 挑战2:让机器人帮你检查作业 54
2.5 哈希表 562.5.1 定义 56
2.5.2 挑战:基因研究 62
2.6 树 642.6.1 定义 65
2.6.2 二叉树 66
2.6.3 二叉查找树 71
2.6.4 挑战:画一棵好看的“树” 75
2.7 图 782.7.1 定义 79
2.7.2 图的表示 79
2.7.3 图的遍历 82
2.7.4 挑战:“一笔画完”小游戏 86
2.8 总结 913
第3章 数 学 92
3.1 进制转换 93
3.2 基本概念 933.2.1 十进制 93
3.2.2 二进制 93
3.2.3 八进制和十六进制 93
3.2.4 进制转换 94
3.2.5 挑战:网络攻击 98
3.3 数学运算 1003.3.1 内置函数 100
3.3.2 Math库模块 101
3.3.3 排列组合 102
3.3.4 矩阵运算 102
3.4 挑战:小花童的困惑 102
3.5 挑战:顽皮的图书管理员 105
3.6 特别的数字 1063.6.1 质数 106
3.6.2 水仙花数 107
3.6.3 完全数 108
3.6.4 挑战:奇妙的数字 109
3.7 数列 1103.7.1 等差数列 110
3.7.2 等比数列 111
3.7.3 调和数列 113
3.7.4 斐波那契数列 114
3.7.5 杨辉三角 115
3.7.6 冰雹猜想 119
3.7.7 卡特兰数 120
3.7.8 挑战:百变二叉树 120
3.8 总结 1224
第4章 排 序 123
4.1 定义 124
4.2 冒泡排序 1244.2.1 定义 124
4.2.2 挑战:三角形大比拼 125
4.3 选择排序 1284.3.1 定义 128
4.3.2 稳定性比较 128
4.4 插入排序 1304.4.1 定义 130
4.4.2 直接插入排序 130
4.4.3 折半插入排序 131
4.5 归并排序 1324.5.1 定义 132
4.5.2 挑战:成为大富翁 133
4.6 快速排序 1364.6.1 定义 136
4.6.2 优化 138
4.6.3 挑战:荷兰国旗问题 139
4.7 Python内置排序 141
4.8 算法比较 144
4.9 总结 1475
第5章 查 找 148
5.1 定义 149
5.2 线性查找 1505.2.1 定义 150
5.2.2 挑战:海洋探测 151
5.3 间隔查找 1525.3.1 二分查找 152
5.3.2 斐波那契查找 154
5.3.3 插值查找 156
5.3.4 跳跃查找 157
5.3.5 挑战:洒水的最小半径 158
5.4 树表查找 1605.4.1 二叉树查找 160
5.4.2 平衡树:2-3查找树 162
5.4.3 平衡树:红黑树 169
5.4.4 挑战:二叉树园丁 179
5.5 Python的内置查找函数 181
5.6 挑战:不可攻破的密码 183
5.7 总结 1866
第6章 图的算法 187
6.1 图的遍历 188
6.2 图的连通 1886.2.1 连通图 188
6.2.2 循环图 189
6.3 最小生成树问题 1936.3.1 克鲁斯卡尔算法 193
6.3.2 普里姆算法 197
6.4 拓扑排序 201
6.5 最短路径算法 2046.5.1 戴克斯特拉算法 204
6.5.2 贝尔曼-福特算法 208
6.6 网络流的最大流问题 2126.6.1 网络流 212
6.6.2 最大流问题 212
6.7 挑战:朋友圈扩列 216
6.8 挑战:最长人脉路径 220
6.9 总结 2227
第7章 算法思想归纳 223
7.1 递推 2247.1.1 定义 224
7.1.2 顺推法 224
7.1.3 挑战:剑客的秘密 224
7.1.4 逆推法 225
7.1.5 挑战:骑士游历 226
7.2 递归 2297.2.1 定义 229
7.2.2 挑战:八皇后问题 231
7.3 分治算法 2347.3.1 定义 234
7.3.2 挑战:小孩的作业真麻烦 235
7.4 动态规划 2377.4.1 定义 237
7.4.2 重复子问题 237
7.4.3 最优子结构性质 239
7.4.4 挑战:荒野求生 239
7.4.5 总结 244
7.5 贪心算法 2477.5.1 定义 247
7.5.2 挑战:埃及分数 247
7.5.3 挑战:超级收银员 249
7.5.4 总结 250
7.6 穷举法 2537.6.1 定义 253
7.6.2 挑战:韩信点兵 253
7.6.3 剪枝策略 254
7.6.4 极大极小值算法 255
7.6.5 Alpha-beta剪枝算法 257
7.6.6 挑战:教计算机玩“井”字
游戏 260
7.7 启发式搜索算法 2697.7.1 最佳优先搜索算法 270
7.7.2 A*算法 272
7.7.3 遗传算法 276
7.7.4 挑战:吊死鬼游戏 278
7.8 挑战:旅游路线规划师 2847.8.1 方案一:穷举法 285
7.8.2 方案二:动态规划 287
7.8.3 方案三:遗传算法 290
7.9 总结 298附 录 Python语法速查 299
附1 Python内置对象 300附1.1 对象类型 300
附1.2 变量的命名 300
附1.3 常用关键词 300
附1.4 数字 302
附1.5 赋值运算符 302
附1.6 字符串 303
附1.7 格式描述符 305
附1.8 常用列表操作 307
附1.9 常用字典操作 308
附1.10 常见集合操作 309
附1.11 布尔值 309
附2 函数 311附2.1 函数参数 311
附2.2 对象运算符重载 312
附3 异常处理 313附3.1 处理方式 313
附3.2 标准异常 313
附4 文件 315附4.1 文件读写 315
附4.2 读写模式配置 315
- 北京大学出版社旗舰店 (微信公众号认证)
- 【发票】在订单留言电子邮箱、发票抬头、税号、(统一开电子发票,缺一项都不能开票,自行下载打印)
- 扫描二维码,访问我们的微信店铺
- 随时随地的购物、客服咨询、查询订单和物流...