全新正版书籍,24小时发货,可开发票。
¥ 47.4 5.3折 ¥ 89.5 全新
库存9件
作者薛小龙
出版社清华大学出版社
ISBN9787302574590
出版时间2021-04
装帧平装
开本16开
定价89.5元
货号29236469
上书时间2024-12-28
从您开始学习编程的那一刻起,就注定了以后所要走的路:从编程学习者开始,依次经历实习生、程序员、软件工程师、架构师、CTO等职位的磨砺;当你站在职位的位置蓦然回首,会发现自己的成功并不是偶然,在程序员的成长之路上会有不断修改代码、寻找并解决Bug、不停地测试程序和修改项目的经历。不可否认的是,只要你在自己的开发生涯中稳扎稳打,并且善于总结和学习,终将会得到可喜的收获。
选择一本合适的书
对于一名程序开发初学者来说,究竟如何学习并提高自己的开发技术呢?答案就是买一本合适的程序开发书籍进行学习。但是,市面上许多面向初学者的编程书籍中的大多数篇幅都是讲解基础知识,多偏向于理论,读者读了以后面对实战项目时还是无从下手。如何实现从理论平滑过渡到项目实战,是初学者迫切需要学习的。为此,我们特意策划了本书。
本书面向完全没有算法编程经验的零基础的读者,实现算法零基础到高手的跨越,讲解了Python算法的核心知识和技巧,这些知识能够帮助初学者迅速掌握Python算法的精髓,编写出更加高效的代码。
本书的特色
1.以“从入门到精通”的写作方法构建内容,让读者入门容易
为了使读者能够完全看懂本书的内容,本书遵循“从入门到精通”基础类图书的写法,循序渐进地讲解开发语言的基本知识。
2. 实例教学,经典并深入
本书以实例教学为导向,通过具体实例讲解各种算法思想的基本知识和核心用法。通过具体实例的讲解和剖析,帮助读者真正掌握Python算法的核心内容。
3.视频讲解,二维码布局全书
本书正文的每一个二级目录都有一个二维码,通过扫描二维码可以观看视频讲解,既包括实例讲解,也包括教程讲解,对读者的开发水平实现了拔高处理。
4.本书售后帮助读者快速解决学习问题
无论是对书中的疑惑,还是在学习中遇到的其他问题,群主和管理员都将在时间为读者解答,这是我们对读者的承诺。
本书的内容
本书循序渐进地详细讲解了算法实现的核心技术。全书共13章,分别讲解了初步认识算法、枚举算法思想、递归算法思想、分治算法思想、贪心算法思想、试探算法思想、迭代算法思想、查找算法、排序算法、使用算法解决数据结构问题、解决数学问题、常见的经典算法问题、常用的人工智能算法。本书通过具体实例的实现过程演练了各个知识点的具体使用流程,引领读者全面掌握算法的核心技术。
本书的读者对象
初学编程的自学者 编程爱好者
大、中专院校的教师和学生 相关培训机构的教师和学员
毕业设计的学生 初、中级程序开发人员
软件测试人员 参加实习的初级程序员
在职程序员
致谢
在本书编写过程中,得到了清华大学出版社编辑们的大力支持,正是各位编辑的求实、耐心和高效,才使得本书能够在这么短的时间内出版。另外,也十分感谢我的家人给予的巨大支持。
本人水平有限,书中存在纰漏之处在所难免,诚请读者提出宝贵的意见或建议,以便修订时使之更臻完善。
后感谢您购买本书,希望本书能成为您编程路上的领航者,祝您阅读快乐!
编 者
算法是程序的灵魂,算法能够告诉开发者在面对一个项目功能时用什么思路去实现。《Python算法从入门到实践》循序渐进地讲解了算法实现的核心技术。全书共分为 13 章,主要内容包括初步认识算法、枚举算法思想、递归算法思想、分治算法思想、贪心算法思想、试探算法思想、迭代算法思想、查找算法、排序算法、使用算法解决数据结构问题、解决数学问题、常见的经典算法问题、常用的人工智能算法。本书通过具体实例的实现过程演练了各个知识点的具体使用流程,引领读者全面掌握算法的核心技术。 《Python算法从入门到实践》不但适合算法研究和学习的初学者,也适合有一定算法基础的读者,还可以作为大、中专院校相关专业师生的学习用书和培训机构的教材。
算法是程序的灵魂,算法能够告诉开发者在面对一个项目功能时用什么思路去实现。《Python算法从入门到实践》循序渐进地讲解了算法实现的核心技术。全书共分为 13 章,主要内容包括初步认识算法、枚举算法思想、递归算法思想、分治算法思想、贪心算法思想、试探算法思想、迭代算法思想、查找算法、排序算法、使用算法解决数据结构问题、解决数学问题、常见的经典算法问题、常用的人工智能算法。本书通过具体实例的实现过程演练了各个知识点的具体使用流程,引领读者全面掌握算法的核心技术。 《Python算法从入门到实践》不但适合算法研究和学习的初学者,也适合有一定算法基础的读者,还可以作为大、中专院校相关专业师生的学习用书和培训机构的教材。
薛小龙,哈尔滨工业大学计算机硕士,现就职于阿里天猫国际研发部门。精通Python、C、C 、Java、C#开发语言,擅长数据分析和大数据挖掘技术,熟悉软件规划、项目架构和项目推广。近年来随着AI和大数据业务的兴起,深入研究了人工智能开发应用。热衷于人工智能、Android开发和物联网开发,对AI项目的架构设计和实现原理有非常深刻的认识和理解,应用开发经验也十分丰富。
第1章 初步认识算法 1
1.1 什么是算法 2
1.1.1 一道有趣的智力题 2
1.1.2 算法的定义 2
1.1.3 计算机中的算法 3
1.1.4 算法在编程语言中的定义 4
1.2 衡量算法的优劣 4
1.2.1 衡量算法优劣的标准 4
1.2.2 算法复杂度 5
1.2.3 时间复杂度与空间复杂度的取舍问题 8
第2章 枚举算法思想 9
2.1 枚举算法概述 10
2.1.1 枚举算法介绍 10
2.1.2 Python中的枚举算法 10
2.2 破解谜题 11
2.2.1 算法分析 11
2.2.2 具体实现 11
2.3 破解24点游戏 12
2.3.1 算法分析 12
2.3.2 使用枚举算法解决24点问题 13
2.4 解决熄灯问题 16
2.4.1 算法分析 17
2.4.2 使用numpy和枚举算法解决熄灯问题 19
2.5 解决“讨厌的青蛙”问题 20
2.5.1 算法分析 21
2.5.2 具体实现 22
2.6 解决“鸡兔同笼”问题 24
2.6.1 算法分析 24
2.6.2 具体实现:输入头和脚的个数的解法 24
2.7 解决“水仙花数”问题 25
2.7.1 找出1000以内的水仙花数 25
2.7.2 找出5位水仙花数 26
2.7.3 找出10000以内的水仙花数(包括1位、2位) 26
第3章 递归算法思想 29
3.1 递归算法思想基础 30
3.1.1 什么是递归 30
3.1.2 对递归和循环的生动解释 31
3.1.3 用归纳法来理解递归 32
3.1.4 递归的三个要素 32
3.2 解决“斐波那契数列”问题 33
3.2.1 算法分析 33
3.2.2 计算斐波那契数列的第n项值 34
3.2.3 使用Memorization(记忆化)优化递归 35
3.3 用递归算法解决“汉诺塔”问题 36
3.3.1 算法分析 37
3.3.2 使用递归算法解决“汉诺塔”问题的具体实现 38
3.4 解决“阶乘”问题 40
3.4.1 算法分析 40
3.4.2 使用递归算法计算10之内的阶乘 41
3.4.3 使用循环计算阶乘 41
3.5 进制转换器 42
3.5.1 算法分析 42
3.5.2 比较递归方案和循环方案 42
3.6 解决二叉树遍历问题 43
3.6.1 算法分析 43
3.6.2 实现树结构 44
3.6.3 递归遍历方案 45
3.7 求解公约数和小公倍数 46
3.7.1 算法分析 47
3.7.2 基于递归算法的方案 47
3.8 解决全排列问题 48
3.8.1 具体实现:将全排列问题分解成多个子问题 48
3.8.2 字节跳动的一道面试题:递归实现n的全排列 49
3.9 解决迷宫问题 49
3.9.1 算法分析 50
3.9.2 具体实现 50
第4章 分治算法思想 53
4.1 分治算法思想基础 54
4.1.1 什么是分治算法 54
4.1.2 分治法的解题思路 54
4.1.3 总结分治法能解决什么类型的问题 56
4.2 找出有序列表中的值 56
4.2.1 算法分析 56
4.2.2 使用二分法在有序列表中找出指定的值 56
4.2.3 使用分治算法判断某个元素是否在列表中 57
4.3 求顺序表中数据的值 58
4.3.1 算法分析 58
4.3.2 具体实现 58
4.4 解决小值和值的问题 59
4.4.1 算法分析 59
4.4.2 查找列表中元素的小值和值 59
4.5 解决第k小(大)元素的问题 61
4.5.1 算法分析 61
4.5.2 找出一组序列中的第k小(大)的元素 61
4.5.3 找出列表中第k大的元素 62
4.6 快速排序 62
4.6.1 算法分析 63
4.6.2 快速排序具体方案 63
4.7 实现归并排序 63
4.7.1 算法分析 63
4.7.2 对指定列表实现归并排序 64
4.8 整数划分 64
4.8.1 算法分析 65
4.8.2 整数划分问题的具体实现 65
4.9 棋盘覆盖 65
4.9.1 算法分析 66
4.9.2 使用分治算法解决棋盘覆盖问题 66
4.9.3 GUI版本的解决棋盘覆盖方案 67
4.10 解决汉诺塔问题 70
4.10.1 算法分析 70
4.10.2 用分治算法解决汉诺塔问题 71
4.11 解决循环赛问题 72
4.11.1 算法分析 72
4.11.2 根据输入的比赛人数解决循环赛问题 72
第5章 贪心算法思想 75
5.1 贪心算法思想基础 76
5.1.1 什么是贪心算法 76
5.1.2 贪心算法的基本思路和基本特性 76
5.2 解决“找零方案”问题 77
5.2.1 算法分析 77
5.2.2 解决“找零方案”的具体实现 77
5.3 解决“汽车加油”问题 78
5.3.1 算法分析 78
5.3.2 计算少加油次数 79
5.3.3 计算如何加油次数会少 79
5.4 解决“求子数组之和”问题 80
5.4.1 算法分析 80
5.4.2 具体实现 81
5.5 解决“幼儿园分糖果”问题 81
5.5.1 算法分析 81
5.5.2 具体实现 82
5.6 圣诞节的礼物 82
5.6.1 算法分析 83
5.6.2 分配指定箱数的糖果 83
5.7 解决“活动安排”问题 84
5.7.1 算法分析 85
5.7.2 使用贪心算法解决“活动安排”问题的方案 85
5.8 解决“摇摆序列”问题 86
5.8.1 算法分析 86
5.8.2 具体解决方案 88
5.9 移除k个数字 89
5.9.1 算法分析 89
5.9.2 具体实现方案 89
5.10 解决“背包”问题 90
5.10.1 算法分析 90
5.10.2 使用小重量贪心策略解决背包问题 90
5.10.3 使用价值密度贪心策略解决背包问题 91
5.10.4 从单位重量价值角度解决背包问题 92
5.11 解决“霍夫曼编码”问题 94
5.11.1 算法分析 94
5.11.2 使用内置库解决问题 95
5.11.3 实现一个可变长度的编码问题 97
5.12 解决“Kruskal算法”问题 98
5.12.1 算法分析 98
5.12.2 种使用Kruskal算法获取小生成树的方案 100
5.12.3 第二种使用Kruskal算法获取小生成树的方案 101
5.12.4 第三种使用Kruskal算法获取小生成树的方案 103
5.13 解决Prim算法问题 105
5.13.1 算法分析 105
5.13.2 种方案 106
5.13.3 第二种方案 107
5.14 解决“马踏棋盘”问题 109
5.14.1 算法分析 109
5.14.2 使用贪心算法和递归算法解决“马踏棋盘”问题 109
第6章 试探算法思想 113
6.1 试探算法思想基础 114
6.1.1 试探法算法介绍 114
6.1.2 使用回溯算法的步骤 114
6.1.3 回溯算法会影响程序的效率吗 115
6.2 解决“解空间”问题 115
6.2.1 算法分析 116
6.2.2 使用子集树模板递归创建一个通用模板 116
6.2.3 使用排列树模板递归创建一个通用模板 117
6.3 解决“全排列”问题 118
6.3.1 算法分析 119
6.3.2 实现 'a', 'b', 'c', 'd' 四个元素的全排列 119
6.4 解决“选排列”问题 120
6.4.1 算法分析 120
6.4.2 使用回溯算法解决“选排列”问题 120
6.5 解决“找零钱”问题 122
6.5.1 算法分析 122
6.5.2 使用回溯算法解决“找零钱”问题 123
6.6 解决“长公共子序列”问题 124
6.6.1 算法分析 124
6.6.2 使用回溯算法解决长公共子序列问题 125
6.7 解决“排课”问题 126
6.7.1 算法分析 127
6.7.2 使用回溯算法解决排课问题 127
6.8 解决“作业调度”问题 129
6.8.1 算法分析 129
6.8.2 使用回溯算法解决作业调度问题 130
6.9 解决“图的遍历”问题 131
6.9.1 算法分析 132
6.9.2 具体实现 132
6.10 解决“爬楼梯”问题 133
6.10.1 算法分析 133
6.10.2 具体实现 133
6.11 解决“m-着色”问题 134
6.11.1 算法分析 135
6.11.2 具体实现 135
6.12 解决“取物搭配”问题 137
6.12.1 算法分析 137
6.12.2 使用回溯算法解决“取物搭配”问题 137
6.13 解决“旅行商”问题 139
6.13.1 算法分析 139
6.13.2 具体实现 139
6.14 解决“0-1背包”问题 141
6.14.1 算法分析 141
6.14.2 使用回溯子集树法解决问题 141
6.15 解决“野人与传教士”问题 142
6.15.1 算法分析 143
6.15.2 使用回溯子集树法解决野人与传教士问题 143
6.16 解决“骑士巡逻”问题 144
6.16.1 算法分析 145
6.16.2 使用试探算法解决“骑士巡逻”问题 145
6.17 解决“八皇后”问题的4种方案 147
6.17.1 算法分析 147
6.17.2 使用回溯法解决八皇后问题 147
6.17.3 使用递归回溯算法解决八皇后问题 148
6.17.4 在纵向和斜向判断是否存在其他皇后 151
6.18 解决“迷宫”问题 154
6.18.1 算法分析 154
6.18.2 使用回溯法解决迷宫问题 154
6.19 解决面试题“矩阵中的路径” 156
6.19.1 算法分析 157
6.19.2 具体实现 157
6.20 解决“马踏棋盘”问题 158
6.20.1 算法分析 159
6.20.2 使用回溯算法解决“5×5马踏棋盘”问题 159
第7章 迭代算法思想 161
7.1 迭代算法思想基础 162
7.1.1 迭代算法思想介绍 162
7.1.2 迭代法和方程 162
7.2 解决“斐波那契数列”问题 163
7.2.1 算法分析 163
7.2.2 使用迭代算法计算第12个月时兔子的数量 164
7.2.3 比较迭代算法和递归算法的效率 164
7.3 解决“角谷猜想”问题 165
7.3.1 算法分析 165
7.3.2 种方案 165
7.3.3 第二种方案 166
7.4 使用牛顿迭代法计算方程的根 167
7.4.1 算法分析 167
7.4.2
— 没有更多了 —
以下为对购买帮助不大的评价