您好,欢迎来到聚文网。
登录
免费注册
网站首页
|
搜索
热搜:
磁力片
|
漫画
|
购物车
0
我的订单
商品分类
首页
幼儿
文学
社科
教辅
生活
销量榜
Python算法从入门到实践
字数: 592
出版社: 清华大学
作者: 薛小龙
商品条码: 9787302574590
版次: 1
页数: 378
出版年份: 2021
印次: 1
定价:
¥89.5
销售价:
登录后查看价格
¥{{selectedSku?.salePrice}}
库存:
{{selectedSku?.stock}}
库存充足
{{item.title}}:
{{its.name}}
加入购物车
立即购买
加入书单
收藏
精选
¥5.83
世界图书名著昆虫记绿野仙踪木偶奇遇记儿童书籍彩图注音版
¥5.39
正版世界名著文学小说名家名译中学生课外阅读书籍图书批发 70册
¥8.58
简笔画10000例加厚版2-6岁幼儿童涂色本涂鸦本绘画本填色书正版
¥5.83
世界文学名著全49册中小学生青少年课外书籍文学小说批发正版
¥4.95
全优冲刺100分测试卷一二三四五六年级上下册语文数学英语模拟卷
¥8.69
父与子彩图注音完整版小学生图书批发儿童课外阅读书籍正版1册
¥24.2
好玩的洞洞拉拉书0-3岁宝宝早教益智游戏书机关立体翻翻书4册
¥7.15
幼儿认字识字大王3000字幼儿园中班大班学前班宝宝早教启蒙书
¥11.55
用思维导图读懂儿童心理学培养情绪管理与性格培养故事指导书
¥19.8
少年读漫画鬼谷子全6册在漫画中学国学小学生课外阅读书籍正版
¥64
科学真好玩
¥12.7
一年级下4册·读读童谣和儿歌
¥38.4
原生态新生代(传统木版年画的当代传承国际研讨会论文集)
¥11.14
法国经典中篇小说
¥11.32
上海的狐步舞--穆时英(中国现代文学馆馆藏初版本经典)
¥21.56
猫的摇篮(精)
¥30.72
幼儿园特色课程实施方案/幼儿园生命成长启蒙教育课程丛书
¥24.94
旧时风物(精)
¥12.04
三希堂三帖/墨林珍赏
¥6.88
寒山子庞居士诗帖/墨林珍赏
¥6.88
苕溪帖/墨林珍赏
¥6.88
楷书王维诗卷/墨林珍赏
¥9.46
兰亭序/墨林珍赏
¥7.74
祭侄文稿/墨林珍赏
¥7.74
蜀素帖/墨林珍赏
¥12.04
真草千字文/墨林珍赏
¥114.4
进宴仪轨(精)/中国古代舞乐域外图书
¥24.94
舞蹈音乐的基础理论与应用
内容简介
算法是程序的灵魂,算法能够告诉开发者在面对一个项目功能时用什么思路去实现。《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
×
Close
添加到书单
加载中...
点此新建书单
×
Close
新建书单
标题:
简介:
蜀ICP备2024047804号
Copyright 版权所有 © jvwen.com 聚文网