• Python算法从入门到实践
21年品牌 40万+商家 超1.5亿件商品

Python算法从入门到实践

16.27 1.8折 89.5 八五品

库存4件

广东东莞
认证卖家担保交易快速发货售后保障

作者薛小龙

出版社清华大学出版社

出版时间2021-04

版次1

装帧其他

上书时间2024-01-04

晓布点书店

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:八五品
图书标准信息
  • 作者 薛小龙
  • 出版社 清华大学出版社
  • 出版时间 2021-04
  • 版次 1
  • ISBN 9787302574590
  • 定价 89.50元
  • 装帧 其他
  • 开本 16开
  • 纸张 胶版纸
  • 页数 392页
  • 字数 592千字
【内容简介】
算法是程序的灵魂,算法能够告诉开发者在面对一个项目功能时用什么思路去实现。《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  计算方程x3-x-1=0的根 167

7.4.3  比较简单迭代法和牛顿迭代法 168

7.5  使用牛顿迭代法求极值 172

7.5.1  算法分析 172

7.5.2  具体实现 172

7.6  求平方根 173

7.6.1  算法分析 173

7.6.2  使用牛顿迭代法求平方根 173

7.7  求极值并绘制曲线 175

7.7.1  算法分析 175

7.7.2  使用牛顿迭代法求极值并绘制曲线 175

7.8  求解输入的方程 177

7.8.1  项目需求 178

7.8.2  使用牛顿迭代法求解输入的方程 178

7.9  求x附近的一个实根 179

7.9.1  算法分析 179

7.9.2  求方程在x附近的一个实根 179

7.10  解决“非线性方程组”问题 180

7.10.1  使用内置函数求解非线性方程组 180

7.10.2  使用第三方库函数求解非线性方程组 181

7.11  求解线性方程组 182

7.11.1  算法分析 183

7.11.2  使用雅克比迭代法求解线性方程组 183

7.12  使用Gauss-Seidel迭代法求解线性方程组 185

7.12.1  算法分析 185

7.12.2  具体实现 185

7.13  解决数值分析问题 187

7.13.1  使用迭代法求解方程 187

7.13.2  解决“龙贝格求积公式”问题 192

7.13.3  解决“三次样条插值”问题 193

7.13.4  解决“拉格朗日插值公式”问题 196

第8章  查找算法 199

8.1  什么是查找算法 200

8.2  线性表查找:顺序查找 200

8.2.1  顺序查找法基础 201

8.2.2  顺序查找的时间复杂度 201

8.2.3  算法演练——实现顺序查找算法 202

8.2.4  算法演练——实现有序列表查找 202

8.2.5  算法演练——实现无序列表查找 203

8.2.6  算法演练——在列表中查找x是否存在 203

8.3  线性表查找:折半查找算法 204

8.3.1  折半查找算法基础 204

8.3.2  算法演练——使用折半查找算法查找数据 205

8.3.3  算法演练——使用折半查找算法查找指定数字 205

8.3.4  算法演练——使用递归法实现折半查找算法 206

8.3.5  算法演练——比较顺序查找和折半查找 206

8.4  线性表查找:插值查找算法 208

8.4.1  插值查找算法基础 208

8.4.2  算法演练——使用插值查找法查找指定的数据 208

8.5  线性表查找:分块查找算法 209

8.5.1  分块查找算法基础 209

8.5.2  算法演练——使用分块查找算法在列表中查找某元素 211

8.5.3  算法演练——改进的使用分块查找算法 212

8.6  基于树的查找法:二叉排序树算法 213

8.6.1  二叉排序树算法基础 214

8.6.2  插入和生成 214

8.6.3  删除操作 215

8.6.4  查找操作 217

8.6.5  算法演练——实现二叉树的搜索、插入、删除、先序遍历、中序遍历和后序遍历操作 217

8.7  基于树的查找法:平衡二叉排序树算法 220

8.7.1  平衡二叉排序树算法基础 220

8.7.2  Python判断平衡二叉树的方法 223

8.7.3  算法演练——实现平衡二叉树的基本操作 223

8.8  哈希查找算法 229

8.8.1  哈希算法的基本思想 230

8.8.2  构造哈希函数 230

8.8.3  处理冲突 232

8.8.4  哈希表的查找过程 234

8.8.5  算法演练——使用哈希算法查找数据 234

8.9  斐波那契查找算法 235

8.9.1  斐波那契查找算法基础 235

8.9.2  算法演练——使用斐波那契查找算法查找数据 236

8.9.3  算法演练——比较顺序查找、二分查找、插值查找和斐波那契查找 237

8.10  红黑树查找算法 239

8.10.1  红黑树查找算法基础 239

8.10.2  算法演练——使用红黑树操作数据 240

8.10.3  算法演练——绘制红黑树的插入图 244

第9章  排序算法 249

9.1  什么是排序算法 250

9.1.1  排序算法的定义 250

9.1.2  排序算法的分类 250

9.2  插入排序算法 250

9.2.1  插入排序算法基础 251

9.2.2  直接插入排序算法 251

9.2.3  算法演练——排序一个列表 252

9.2.4  算法演练——升序和降序排列 253

9.3  希尔排序 254

9.3.1  希尔排序算法基础 254

9.3.2  算法演练——使用希尔排序算法对数据进行排序处理 255

9.3.3  算法演练——排序一个列表 256

9.3.4  算法演练——使用希尔排序算法对列表进行排序 257

9.4  交换类排序:冒泡排序算法 258

9.4.1  冒泡排序(相邻比序法)算法基础 258

9.4.2  算法演练——简单的冒泡排序 259

9.4.3  算法演练——实现从大到小的冒泡排序 260

9.4.4  算法演练——使用冒泡排序算法的优化 261

9.5  交换类排序:快速排序算法 263

9.5.1  快速排序算法基础 264

9.5.2  算法演练——实现基本的快速排列 265

9.5.3  算法演练——使用快速排序算法排列一个列表 266

9.6  选择排序算法 267

9.6.1  直接选择排序算法基础 267

9.6.2  树形选择排序算法基础 268

9.6.3  算法演练——使用直接选择排序算法 268

9.6.4  算法演练——使用直接选择排序算法排列一个列表 269

9.7  堆排序算法 270

9.7.1  堆排序算法基础 270

9.7.2  算法演练——使用堆排序处理数据 272

9.7.3  算法演练——实现堆排序 273

9.8  归并排序算法 276

9.8.1  归并排序算法基础 276

9.8.2  两路归并算法的思路 277

9.8.3  实现归并排序 278

9.8.4  算法演练——使用归并排序算法排列一个列表 279

9.8.5  算法演练——图解归并排序算法 280

9.9  基数排序算法 282

9.9.1  多关键字排序 282

9.9.2  链式基数排序 283

9.9.3  算法演练——使用基数排序算法排序随机数字 284

9.9.4  算法演练——使用基数排序算法排序列表 285

9.10  综合比较各种排序方法 287

第10章  使用算法解决数据结构问题 289

10.1  约瑟夫环 290

10.1.1  问题描述 290

10.1.2  算法分析 290

10.1.3  具体实现 291

10.2  操作顺序表 292

10.2.1  算法分析 293

10.2.2  具体实现 293

10.3  操作链表 295

10.3.1  算法分析 295

10.3.2  具体实现 295

10.4  带有尾节点引用的单链表 297

10.4.1  算法分析 297

10.4.2  具体实现 297

10.5  操作队列、链表、顺序表和循环顺序表 299

10.5.1  时间复杂度分析 299

10.5.2  具体实现 299

10.6  使用多叉树寻找最短路径 302

10.6.1  算法分析 302

10.6.2  具体实现 302

10.7  树操作 304

10.7.1  实现AVL树 304

10.7.2  使用二维数组生成有向图 307

10.7.3  使用广度优先和深度优先遍历二叉树 308

第11章  解决数学问题 311

11.1  一段神奇的字符 312

11.1.1  问题描述 312

11.1.2  具体实现 312

11.2  1000以内的完全数 313

11.2.1  问题描述 313

11.2.2  算法分析 314

11.2.3  具体实现 315

11.3  多进程验证哥德巴赫猜想 315

11.3.1  问题描述 315

11.3.2  算法分析 315

11.3.3  具体实现 316

11.4  最大公约数和最小公倍数 318

11.4.1  算法分析 318

11.4.2  具体实现 318

11.5  亲密数 319

11.5.1  算法分析 319

11.5.2  具体实现 319

11.6  计算10000以内的自守数 320

11.6.1  算法分析 320

11.6.2  具体实现 320

11.7  矩阵运算 320

11.7.1  算法分析 321

11.7.2  具体实现 321

11.8  一元多项式运算 322

11.8.1  一元多项式求导 322

11.8.2  实现多项式的加、减、乘法运算 323

11.9  素数问题 325

11.9.1  求1000以内的所有素数 325

11.9.2  孪生素数问题 326

11.9.3  金蝉素数 327

11.9.4  可逆素数 328

11.9.5  回文素数 329

11.9.6  等差素数数列 329

第12章  常见的经典算法问题 333

12.1  借书方案 334

12.1.1  算法分析 334

12.1.2  具体实现 334

12.2  捕鱼和分鱼 335

12.2.1  算法分析 336

12.2.2  具体实现 336

12.3  出售金鱼 336

12.3.1  算法分析 336

12.3.2  具体实现 337

12.4  平分七筐鱼 337

12.4.1  算法分析 337

12.4.2  具体实现 338

12.5  绳子的长度和井深 338

12.5.1  算法分析 339

12.5.2  具体实现 339

12.6  鸡兔同笼 340

12.6.1  算法分析 340

12.6.2  具体实现 340

12.7  三色球问题 341

12.7.1  算法分析 341

12.7.2  具体实现 342

12.8  计算年龄 342

12.8.1  算法分析 342

12.8.2  具体实现 342

12.9  常胜将军问题 343

12.9.1  算法分析 344

12.9.2  具体实现 344

12.10  野人与传教士问题 345

12.10.1  算法分析 345

12.10.2  具体实现 345

12.11  三色旗问题 347

12.11.1  算法分析 347

12.11.2  具体实现 347

12.12  猴子分桃 348

12.12.1  算法分析 348

12.12.2  具体实现 349

第13章  常用的人工智能算法 351

13.1  线性回归算法 352

13.1.1  线性回归介绍 352

13.1.2  绘制三维平面 352

13.1.3  预测房价 353

13.2  二元决策树算法 359

13.2.1  何为二元决策树 359

13.2.2  选择二元决策树切割点 359

13.2.3  使用二元决策树拟合数据 361

13.2.4  确定最佳深度的算法 362

13.3  Bagging算法 365

13.3.1  何为Bagging算法 365

13.3.2  实现Bootstrap采样 366

13.4  Boosting算法 367

13.4.1  Boosting基础 367

13.4.2  心绞痛ROC曲线检测系统 368

13.5  随机森林算法 372

13.5.1  什么是随机森林 373

13.5.2  分析声呐数据 373
点击展开 点击收起

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP