| 
 新書推薦:
 
  《 
			要有光
			》
 售價:HK$ 
			75.9
 
  《 
			岁月的泡沫(波伏瓦、加缪的密友,法国文坛鬼才书写爱情霍乱!)
			》
 售價:HK$ 
			46.2
 
  《 
			索恩丛书·帝国计划:英国世界体系的兴衰(1830~1970)
			》
 售價:HK$ 
			185.9
 
  《 
			改变的勇气:数十个真实人生蜕变故事,教你改变命运的密码。
			》
 售價:HK$ 
			64.9
 
  《 
			明清时期的灾害治理机制
			》
 售價:HK$ 
			66.0
 
  《 
			甲骨文丛书·理查国王:尼克松和水门事件
			》
 售價:HK$ 
			108.9
 
  《 
			绣罗衣裳照暮春——古代服饰与时尚
			》
 售價:HK$ 
			93.5
 
  《 
			HR如何招聘人才:招聘思维与技能
			》
 售價:HK$ 
			61.6
 
 
 | 
         
          | 編輯推薦: |   
          | 案例丰富,信息量大,实用性强,注释详细。内容涉及Office文件操作、GUI设计、图像处理、计算机图形学编程、音视频处理、数据分析、数据可视化与科学计算可规化、密码学、数据库、网络编程、多线程与多进程编程,逆向工程、Windows系统编程,安卓编程等领域。 深度与广度兼顾。剖析Python编程模式,适当介绍标准库与扩展库工作原理以及代码优化与安全编程知识,满足不同层次读者的需要。
 知识点密集、紧凑。书中尽量减少代码的运行结果和软件安装过程截图,充分利用有限篇幅讲解更多知识。
 配套资源丰富。提供教学课件、教学大纲、授课计划、电子教案、教学视频、习题答案、配套源码、数据文件、在线练习与考试软件,支持QQ、微信、电子邮件、微信公众号等多种方式与作者交流。
 |  
         
          | 內容簡介: |   
          | 全书分为两篇,共18章。第1篇介绍算法分析与设计基础、算法测试方法与优化技巧,以及枚举算
來源:香港大書城megBookStore,http://www.megbook.com.hk 法、解析算法、递推与迭代算法、递归与回溯算法、排序算法、查找算法、贪心算法、分治法、动态规
 划算法的基本原理、实现源码与优化思路。第2篇介绍数论、线性代数、概率论与随机过程、益智游戏、
 图论、机器学习、计算机图形学、密码学等多个领域的常见算法与实现。所有例题都进行详细讲解并提
 供了Python源码,全部源码均在Python主流开发环境中测试通过。
 本书案例丰富,实用性强,深入浅出,理论与应用结合,学习路线清晰,配套资源立体化、多元化,
 可以作为高等院校计算机类专业本科与研究生算法类课程的教材,其他专业本科或研究生以及计算机专
 业专科学生可以选讲部分章节。本书也适合算法工程师、爱好者以及参加算法竞赛的学生参考学习。
 |  
         
          | 目錄: |   
          | 第1篇 常用算法的原理、实现与优化 
 第1章 算法分析与设计基础 .002
 1.1 基本概念 .002
 1.2 算法复杂度指标 003
 1.2.1 时间复杂度 .003
 1.2.2 测量程序运行时间和空间使用情况 005
 1.3 算法优化常用思路 008
 1.3.1 算法层面优化 .008
 1.3.2 代码层面优化 .010
 习题 013
 第2章 枚举算法 017
 2.1 数学类问题算法设计与应用 .017
 2.2 其他类问题算法设计与应用 .031
 习题 037
 第3章 解析算法 039
 3.1 数学类问题算法设计与应用 .039
 3.2 物理类问题算法设计与应用 .048
 3.3 其他类问题算法设计与应用 .053
 习题 061
 第4章 递推与迭代算法 063
 4.1 数学类问题算法设计与应用 .063
 4.2 其他类问题算法设计与应用 .085
 习题 098
 
 
 第5章 递归与回溯算法 101
 5.1 数学类问题算法设计与应用 .102
 5.2 其他类问题算法设计与应用 .105
 5.3 尾递归优化 .120
 习题 122
 第6章 排序算法 124
 6.1 排序算法的原理与实现 124
 6.1.1 冒泡排序算法 .124
 6.1.2 选择排序算法 .126
 6.1.3 插入排序算法 .128
 6.1.4 侏儒排序算法 .129
 6.1.5 希尔排序算法 .129
 6.1.6 堆排序算法 .130
 6.1.7 归并排序算法 .131
 6.1.8 快速排序算法 .133
 6.1.9 基数排序算法 .134
 6.1.10 计数排序算法 135
 6.2 排序算法高级应用 138
 习题 147
 第7章 查找算法 150
 7.1 线性查找算法 150
 7.2 二分法查找 .159
 习题 162
 第8章 贪心算法 164
 8.1 找零钱问题 .164
 8.2 幼儿园加餐吃面包问题 165
 8.3 汽车加油问题 166
 8.4 区间合并问题 167
 8.5 分数分解问题 167
 8.6 若干数字中前后元素最大差问题 .169
 8.7 活动安排问题 169
 
 
 8.8 哈夫曼编码与解码 171
 习题 174
 第9章 分治法 176
 9.1 方程近似根 .176
 9.2 任意数列的逆序数 177
 9.3 大自然数相乘 180
 9.4 若干整数的第k大元素 181
 9.5 元素之和最大的连续子序列 .186
 9.6 二维平面距离最近的两个点 .188
 习题 192
 第10章 动态规划算法 .193
 10.1 斐波那契数列第n个数 .194
 10.2 找零钱问题 194
 10.3 奖品收集问题 .197
 10.4 0-1背包问题 .200
 10.5 最长非递减子序列 .206
 10.6 最长公共子序列 .210
 习题 214
 第2篇
 算法在不同学科中的应用
 
 第11章 数论算法 .216
 11.1 进制转换 216
 11.2 最大公约数 217
 11.3 素性检测 219
 11.4 大数乘法与多项式乘法 .229
 11.5 乘模逆、扩展欧几里得算法 234
 11.6 中国剩余定理 .237
 11.7 快速幂模算法 .239
 11.8 水仙花数 244
 11.9 平方数与自守数 .249
 
 
 11.10 整数分解 .251
 习题 259
 第12章 线性代数算法 .261
 12.1 向量基本运算 .261
 12.2 矩阵基本运算 .265
 12.3 矩阵行列式、代数余子式、逆矩阵 269
 习题 275
 第13章 概率论与随机过程算法 277
 13.1 概率论的基本概念 .277
 13.2 算法应用案例解析 .279
 习题 288
 第14章 益智游戏类算法 .289
 14.1 24点游戏 289
 14.2 蒙蒂霍尔悖论游戏 .290
 14.3 寻宝游戏 292
 14.4 模拟发红包 297
 14.5 聪明的尼姆游戏 .298
 14.6 抓狐狸游戏 299
 14.7 确定旅游目的地 .301
 14.8 制作漂亮手链 .303
 14.9 数字可达游戏 .304
 14.10 电影院选座位问题 307
 14.11 数独游戏盘面生成与自动求解 .308
 14.12 推理游戏 .313
 14.13 迷宫自动寻找最短路径 315
 习题 318
 第15章 图论算法 .320
 15.1 图的概念、表示、应用与可视化 320
 15.1.1 基本概念与应用场景 .320
 15.1.2 图的表示方式 .321
 
 
 15.1.3 图的可视化 .325
 15.1.4 寻找人群中的明星 .326
 15.2 二叉树与多叉树节点遍历 326
 15.3 通路、回路、最短路径 .331
 15.4 拓扑排序 340
 15.5 图着色问题 341
 15.6 最小生成树 344
 15.7 完美匹配 346
 15.8 最大流 347
 习题 352
 第16章 机器学习算法 .353
 16.1 线性回归算法原理与应用 353
 16.1.1 线性回归算法原理 .353
 16.1.2 使用线性回归模型预测儿童身高 355
 16.2 协同过滤算法原理与电影推荐 357
 16.3 朴素贝叶斯算法原理与应用 358
 16.3.1 分类算法基本原理 .358
 16.3.2 使用朴素贝叶斯算法进行垃圾邮件分类 .359
 16.4 分类算法与聚类算法 .363
 16.4.1 使用KNN算法判断交通工具类型 363
 16.4.2 使用K-Means算法压缩图像颜色 365
 16.4.3 DBSCAN算法原理与应用 368
 16.5 关联规则分析算法原理与应用 370
 16.5.1 基本概念与算法原理 .371
 16.5.2 使用关联规则分析算法分析和预测演员关系 .371
 习题 375
 第17章 计算机图形学算法 376
 17.1 Bresenham直线生成算法 .376
 17.2 二维平面直线裁剪算法 .379
 17.2.1 Cohen-Sutherland裁剪算法 380
 17.2.2 Liang-BarSky裁剪算法 384
 17.3 求解点集的凸包 .388
 习题 392
 
 
 第18章 密码学算法 .394
 18.1 安全哈希算法 .394
 18.2 对称密钥密码算法DES和AES 395
 18.3 非对称密钥密码算法RSA与数字签名算法DSA .397
 18.3.1 RSA算法 .397
 18.3.2 DSA算法 .400
 习题 401
 参考文献 .402
 |  
         
          | 內容試閱: |   
          | 不论学习、工作还是生活中,算法无处不在,只是出场方式和表现形式不同,甚至很 多时候都感觉不到算法的存在。但在大数据和人工智能时代,我们会越来越发现,算法比
 我们更懂这个世界,甚至可以说是这个世界的主宰。
 算法是武林高手的内功,是程序的灵魂,编程语言则是手中的刀剑。精妙的招式固然
 重要,但没有深厚的内功作为支撑也只是花拳绣腿,在绝对的实力面前一切技巧都是浮云。
 具备深厚的内功之后,再有一把得心应手的兵器则是锦上添花。程序员水平的高低,最终
 还是看其算法功底以及对所用语言和系统底层知识的理解。一个人往下钻得越深,基础越
 扎实,他的上升空间越大。
 深入分析问题、重新表述问题和重新表示数据并在一定程度上简化问题,是一项非常
 重要的能力,描述问题和表示数据的方式对于算法设计与优化非常重要,好的数据结构和
 表示方法可以起到化繁为简的作用。如果不能使用简单易懂的方式描述和解释一个算法,
 很可能是描述者本人并没有真正理解算法,甚至没有真正理解问题本身。
 当我们编写程序成功解决问题之后,不应该满足于此,功能正确只是最低要求。还应
 该从算法设计、数据类型选择、数据结构设计、语言底层运行机制等方面进行全方位优化,
 让程序更快、更好、更优雅,发挥精益求精、迎难而上的工匠精神,同时也训练自己的抽
 象思维、逻辑思维、计算思维,毕竟算法设计和优化是非常灵活又充满智慧的过程。另外,
 很多算法在问题规模较小时表现很好,但问题规模变大时算法性能就会急剧恶化,这也是
 我们不断优化算法和设计新算法的重要原因和主要目的之一。
 虽然算法推导和证明对于理解、改进和优化旧算法以及设计新算法也很重要,但限于
 篇幅,本书并没有把重点放在此处,甚至个别算法的原理也没有展开详细解释,更多的是
 算法的实现、优化和应用。尽管如此,作者仍然强烈建议有能力的读者阅读更多扩展资料
 理解算法原理以及证明过程,这样更有助于进一步优化和设计算法。
 有人可能会说,既然选择使用Python语言,内置类型、内置函数、标准库、扩展库
 已经封装和实现了大量的算法,并且现在计算机内存和CPU性能也比前些年高了成百上
 千倍,我们自己还有必要在算法上花费这么多精力吗?非要硬抠细节的话,干脆改回去用
 C语言算了。这样想是不对的。不管使用什么语言,良好的算法功底对程序员来说都是非
 常重要的。尽管Python已经提供了强大的计算生态,越来越符合低代码开发的要求,但
 并没有覆盖人类全部的需求,仍有很多核心功能和外围功能需要我们自己编写代码来实现,
 良好的算法设计与优化意识会促使我们去探索底层工作原理和高级用法。Python本身有
 些操作会引入一些隐形的开销,其中有些开销是可以避免的,这需要非常熟悉Python底
 层运行机制。虽然CPU性能和各种硬件配置已经有了翻天覆地的变化,但仍不能满足大数
 据时代信息爆炸式增长和人工智能时代对算力的需求,该节省还是要节省。由于Python
 内置对象、标准库对象以及扩展库对象提供了非常强大的功能,很多人已经慢慢习惯了调
 用现成的模块,自己经常动手实现一些算法不仅可以防止变懒变傻,还可以防止过度依赖
 
 
 别人尤其是防止被国外“卡脖子”。
 书中很多算法的实现和优化利用了Python语言特有的语法和数据结构,不一定适
 用于其他编程语言。尽管真正的算法应该是超脱和凌驾于具体的编程语言之上的,但借
 助于编程语言提供的功能快速实现算法如虎添翼,何乐而不为呢?并且,既然选择使用
 Python语言,充分发挥和利用这门语言的优势也是程序员的义务和优秀品质之一。
 可能你听到过很多人抱怨说Python虽然是门很好的编程语言但实在是太慢了,可能
 你也是这么认为的,但通过学习本书你应该会改变这个看法。一个好的程序不仅需要好的
 算法,还需要对代码本身进行反复优化,充分利用Python提供的功能,同时还要避免一
 些会拖慢程序的坑。即使你不专门从事算法设计和分析行业,也会从本书中介绍的一些思
 路和Python语言知识中受益。
 授人以鱼不如授人以渔,很多人懂这个道理,但却忽略了一个重要前提,那就是传授
 的“渔”必须是经过反复验证有效的,传授者已经使用这样的方法捕到了足够多的鱼,而
 不是纸上谈兵的空洞理论和不切实际的想法。只见过几次猪跑就大谈猪肉味道的做法更是
 不可取的,这是在教学过程中特别需要注意的问题。另外,作为建议,应尽量编写优雅、
 高效、可读性强的代码,不做“防御性编程”(加引号是因为这里不是指原本的意思),故
 意把代码写得难以阅读和维护来避免自己被辞退,虽然确实有人这样做。踏踏实实做事,
 坚信单位是公正的,或者说会越来越公正的,至少我们都希望是这样也朝这个方向去努力。
 每个领域都有大量的算法,仅仅计算机相关领域的算法也不是一本教材能覆盖的,同
 一个算法又在不同的领域有不同的应用。但限于篇幅,也限于作者熟悉的领域,不可能在
 一本书中包含全部,只能精挑细选了很小的一部分来讲解和实现,希望能起到抛砖引玉的
 作用。任何算法都有局限性和适用范围,没有放之四海而皆准的通用算法,如果问题不符
 合特定条件或者不具备特定性质,相应的算法也就不适用了。另外,很少有问题是只使用
 一种算法就可以解决的,大部分问题的求解都是同时使用了多个算法的思想或结构。书中
 有些案例仅使用了一种算法,更多案例则使用多种不同算法进行求解,有些算法的思想在
 多个案例中都有体现,有些案例又可以使用不同的算法来解决,有些案例还同时综合使用
 了多种算法。本书在组织内容时大体以算法类型和案例所属领域来安排章节,但并不严格,
 仍存在不同章节内容交叉的情况。很多案例和算法之间是互相交织和关联的,你中有我,
 我中有你。除第1章外,本书其他章节之间没有严格的先后关系,但也不是并列关系,有
 的章节是算法思想,有的章节是算法结构,有的章节是算法应用,教学或自学时可以随意
 安排顺序。尽管如此,仍建议在时间允许的前提下从前向后按章节顺序学习。
 本书假设读者已有Python基础,这样阅读和理解代码时会轻松很多。如果需要系
 统学习Python基础知识和其他领域的应用,请参考作者编著的其他教材或者微信公众号
 “Python小屋”阅读技术文章。
 本书适合作为计算机类专业的算法课程教材,也可以作为算法工程师与爱好者的自学
 教材或算法竞赛选手的参考资料。用书教师可以在清华大学出版社官方网站下载配套资源,
 也可以通过微信公众号联系作者获取。为便于Python零基础的读者学习,可扫描本页二
 维码快速入门Python语言。
 由于水平有限和时间仓促,书中难免出现错误,欢迎各界同行和广大师生交流反馈。
 董付国
 2025年2月
 |    |