描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302675099
“用图解的方式直观地讲述常用经典算法的核心思想和要点。
结合大量的代码示例剖析算法的设计原理与逻辑构建思想
。图解教学:专门绘制327幅示意图,将抽象的算法原理用形象、直观的方式展现出来,读者理解起来更加容易,学习效果更好。
算法典型:深入分析常见的36种经典算法,涵盖排序、图和字符串等算法,并深入剖析9种经典算法思想,帮助读者深入理解相关算法的构建逻辑。
示例丰富:详解70个算法示例,并用Python语言实现,每个算法至少对应一个示例,便于读者将算法理论与编程实践结合起来,从而提高编程水平和对算法的理解。
注释详细:对所有算法示例中的核心程序代码都进行详细的注释,便于读者更加清晰、直观、深入地理解程序的运行逻辑。
循序渐进:按照“算法基础?排序算法?图算法?字符串算法?经典算法思想”的学习顺序安排内容,讲解由浅入深,由易到难,学习梯度平滑,更容易掌握。
“
“《算法不难 》结合300多幅示意图与70个算法示例(Python实现)直观地讲述36种常用经典算法的相关知识和9种经典算法思想,帮助读者深入理解相关算法的原理与设计思想,为后续学习高级算法夯实基础。
《算法不难 》分为5章。第1章介绍算法的基本概念以及如何正确使用和设计算法等相关知识;第2章介绍排序算法的基本思想以及冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序和基数排序十大排序算法;第3章首先介绍图算法的基础知识,然后介绍路径搜索、广度优先搜索、深度优先搜索、最小生成树、单源最短路径、最大流等常用图算法。第4章介绍字符串处理算法的相关知识,涵盖字符串基础知识以及字符串判断、字符串匹配、字符串排序和字符串压缩等。第5章介绍枚举、递推、递归、分治、贪心、动态规划、迭代、回溯和模拟九大算法思想的原理与应用。
《算法不难 》内容丰富,讲解循序渐进,适合有一定Python语言基础的算法入门人员阅读,也适合其他算法爱好者和程序设计从业人员阅读,还可以作为高等院校相关专业算法课程的教材。
“
第1章 算法基础 1
1.1 什么是算法 1
1.1.1 思维与逻辑 1
1.1.2 算法的特性 2
1.1.3 算法与数学 3
1.1.4 算法与计算机科学 4
1.2 正确使用与设计算法 5
1.2.1 从问题出发 5
1.2.2 永远追求效率 6
1.2.3 算法评测与复杂度 7
1.3 本章小结 17
第2章 排序算法 18
2.1 排序算法的基本思想 18
2.1.1 什么是排序 18
2.1.2 十大经典算法 19
2.1.3 排序算法的稳定性 19
2.1.4 比较排序与非比较排序 20
2.1.5 内部排序与外部排序 21
2.2 十大排序算法及其设计思想 22
2.2.1 冒泡排序 22
2.2.2 选择排序 26
2.2.3 插入排序 31
2.2.4 希尔排序 39
2.2.5 归并排序 43
2.2.6 快速排序 48
2.2.7 堆排序 55
2.2.8 计数排序 67
2.2.9 桶排序 72
2.2.10 基数排序 79
2.3 十大排序算法的性能分析与对比 86
2.3.1 十大排序算法的复杂度分析与对比 86
2.3.2 排序算法的稳定性 87
2.4 本章小结 89
第3章 图算法 90
3.1 图算法概述 90
3.1.1 图的定义 90
3.1.2 图的分类 91
3.1.3 图算法与图分析 92
3.1.4 图算法的应用 92
3.2 有向图与无向图 92
3.3 完全图与非完全图 93
3.4 连通图与非连通图 94
3.5 加权图与非加权图 96
3.6 循环图与非循环图 97
3.7 常用的图算法 98
3.7.1 路径搜索算法 98
3.7.2 广度优先搜索算法 98
3.7.3 深度优先搜索算法 104
3.7.4 最小生成树算法 111
3.7.5 单源最短路径算法 125
3.7.6 最大流算法 136
3.8 本章小结 146
第4章 字符串算法 147
4.1 字符串概述 147
4.1.1 字符串的定义 147
4.1.2 字符串与字节串 147
4.1.3 字节与字节数组 148
4.1.4 字符串算法的处理逻辑 148
4.2 字符串判断算法 149
4.2.1 寻找相同的部分 149
4.2.2 字符串的内置操作 151
4.3 字符串匹配算法 153
4.3.1 BF算法 153
4.3.2 BK算法 154
4.3.3 KMP算法 162
4.3.4 BM算法 168
4.3.5 Sunday算法 174
4.3.6 Robin-Karp算法 176
4.3.7 Bitap算法 181
4.3.8 Horspool算法 199
4.4 字符串排序算法 203
4.4.1 字符串排序的原理 203
4.4.2 键索引计数法 204
4.4.3 LSD低位优先排序 209
4.4.4 MSD高位优先排序 213
4.4.5 三向字符串快速排序 219
4.5 字符串压缩算法 224
4.5.1 字符串压缩的原理 224
4.5.2 有损压缩与无损压缩 226
4.5.3 字典压缩算法 227
4.5.4 哈夫曼压缩算法 231
4.5.5 LZ77压缩算法 243
4.6 本章小结 253
第5章 经典算法思想 254
5.1 枚举算法思想 254
5.1.1 枚举的原理 254
5.1.2 枚举算法实例 254
5.2 递推算法思想 256
5.2.1 递推的原理 257
5.2.2 递推与斐波那契数列 257
5.3 递归算法思想 259
5.3.1 递归的原理 259
5.3.2 用递归算法求阶乘 260
5.4 分治算法思想 262
5.4.1 分治的原理 262
5.4.2 用分治算法求最值 263
5.5 贪心算法思想 265
5.5.1 贪心的原理 265
5.5.2 贪心算法实例 266
5.6 动态规划算法思想 268
5.6.1 动态规划的原理 268
5.6.2 动态规划与路径规划 269
5.7 迭代算法思想 276
5.7.1 迭代的原理 276
5.7.2 用迭代算法求平方 277
5.8 回溯算法思想 278
5.8.1 回溯的原理 278
5.8.2 用回溯算法求八皇后问题 279
5.9 模拟算法思想 288
5.9.1 模拟的原理 288
5.9.2 用一维列表模拟一维关系 289
5.9.3 用二维列表模拟二维关系 289
5.10 本章小结 293
算法是程序设计的灵魂。好的程序通常对应一个或多个算法逻辑。算法是技术人员掌握了基本的程序设计语言和数据结构之后需要进一步掌握的知识。学习算法可以丰富编程逻辑,拓展编程思想,提升编程能力等。一个编程人员或者计算机科研工作者不懂算法可能不会影响其日常工作,但是他们如果想将技能提高到更高的层次则会受阻。因此,学习算法对计算机编程从业人员和科研工作者乃至高校学生十分重要。但是计算机算法比较抽象,不容易用形象和清晰的语言阐述其逻辑与原理,这给人们的学习带来了不小的困难。为了帮助更多的人更好地学习算法,让他们在学习的道路上少走弯路,笔者将自己多年学习算法的经验和心得进行了总结,编写了这本书。
本书的重点在于阐述清楚算法学习的方法,让读者学习起来事半功倍。本书用图解的方式直观地讲述算法的相关知识,让抽象的算法理论变得清晰、形象、直观,让深奥的算法知识变得浅显易懂,非常适合算法学习的入门人员阅读。本书将算法的核心思想与学习的要点与难点用大量的示意图进行简单明了的讲解,读者借助这些示意图,再结合文字讲解和大量的代码示例进行演练,即可较为轻松地理解并掌握相关算法的设计原理与逻辑构建思想。本书用简单易懂的Python语言实现每个算法示例,让读者通过编程实践理解算法的相关知识与应用,而且也降低了学习算法的难度,让读者的学习更有成就感。
本书内容丰富,讲解由浅入深、循序渐进,可以帮助读者深入理解常用经典算法的原理与设计思想,为后续学习高级算法夯实基础,尤其在人工智能高速发展的今天,也能为读者从事相关领域的工作做好知识积累与能力铺垫。
本书特色
? 图解教学:专门绘制300余幅示意图,将抽象的算法原理用形象、直观的方式展现出来,读者理解起来更加容易,学习效果更好。
? 算法典型:深入分析常见的36种经典算法,涵盖排序、图和字符串等算法,并深入剖析9种经典算法思想,帮助读者深入理解相关算法的构建逻辑。
? 示例丰富:详解70个算法示例,并用Python语言实现,每个算法至少对应一个示例,便于读者将算法理论与编程实践结合起来,从而提高编程水平。
? 注释详细:对所有算法示例中的核心程序代码都进行详细的注释,便于读者更加清晰、深入地理解程序的运行逻辑。
? 循序渐进:按照“算法基础→排序算法→图算法→字符串算法→经典算法思想”的学习顺序安排内容,讲解由浅入深,由易到难,学习梯度平滑,更容易掌握。
本书内容
第1章算法基础,主要介绍算法的基本概念以及如何正确使用和设计算法等相关知识,让读者对算法的基础知识有初步的了解。
第2章排序算法,主要介绍排序算法的基本思想,以及冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序和基数排序这十大排序算法的相关知识,让读者系统掌握常用排序算法的基本原理与构建逻辑。
第3章图算法,首先介绍图算法的基础知识,涵盖图的定义与分类、有向图与无向图、完全图与非完全图、连通图与非连通图、加权图与非加权图、循环图与非循环图,然后介绍路径搜索、广度优先搜索、深度优先搜索、最小生成树、单源最短路径、最大流等常用的图算法,让读者初步掌握图算法的基本原理与构建逻辑。
第4章字符串算法,主要介绍字符串处理算法的相关知识,涵盖字符串基础知识以及字符串判断、字符串匹配、字符串排序和字符串压缩等算法,让读者对这类常用的数据处理算法有基本的了解。
第5章经典算法思想,主要介绍枚举、递推、递归、分治、贪心、动态规划、迭代、回溯和模拟九大算法思想的原理与应用,让读者站在更高的层次上对算法设计与实施有更加深刻的理解。
读者对象
? 计算机算法入门人员;
? 计算机算法爱好者;
? 想提升编程水平的人员;
? 想用Python实现算法的人员;
? 程序设计从业人员;
? 信息技术科研人员;
? 高等院校相关专业的学生。
配套资源获取方式
本书涉及的源代码等配套资源有3种获取方式:一是关注本书微信公众号(见书),回复数字“31”自动获取下载链接;二是在清华大学出版社网站上搜索到本书,然后在本书页面上找到“资源下载”栏目,单击“网络资源”或“课件下载”按钮下载;三是扫描以下二维码在作者的GitHub页面上下载。
售后支持
由于笔者水平所限,加之写作时间较为仓促,本书可能还存在一些疏漏和不足之处,敬请广大读者批评与指正。读者在阅读本书时如果有疑问,请发电子邮件。
林进威
“本书对数据结构与常用算法做了详细的讲解,并用Python语言实现。作者绘制了大量的示意图帮助读者理解算法的理论知识,并给出大量的算法示例带领读者实践。相信通过阅读本书,无论是算法入门人员,还是程序设计人员,都会获益颇丰。
——莫纳什大学计算机学院硕博导师 Lim Chernhong
本书通过大量精心绘制的示意图展现抽象的算法思想与逻辑,帮助读者以直观的方式理解算法和程序设计的核心思想。本书内容详尽,讲解循序渐进,可以引领读者掌握常见的经典算法并用Python语言进行实践。本书适合算法入门者和爱好者系统地学习算法思想与构建逻辑,从而提升程序设计能力。对于想要夯实算法基本功的相关人员而言,本书是一本值得推荐的优秀读物。
——哈佛大学博士后/清华大学北京国家信息研究中心教师 贾瑾萌
计算机算法在诸多领域都有广泛的应用。本书作者具有扎实的编程基本功,他编写的这本书以图解的方式深入介绍常用的多种经典算法,尤其对算法思想和原理做了深入讲解,非常适合算法初学者和进阶者阅读,相信会对他们有很大的帮助,强烈推荐阅读。
——深圳市大数据研究院信息系统大数据实验室副主任 朱光旭
本书作者具有丰富的编程经验和深厚的算法基本功。在书中,他向读者详细阐述了常用经典算法的相关知识,并用Python语言实现。本书通过大量生动的示意图和深入浅出的讲解,让复杂的算法变得简单易懂。无论你是算法初学者,还是希望提升编程水平的算法研究者,本书都是你的理想选择。
——北京字跳网络技术有限公司大数据引擎研发专家 董伟柯
本书是一本优秀的算法入门读物,内容丰富,实例生动,算法逻辑清晰。本书提供了大量的示意图,将抽象的算法逻辑形象化,将复杂的算法原理简单化,而且还精心安排了几十个用Python语言实现的算法实例,带领读者上手实践。如果想要系统地学习常用的计算机经典算法,那么就翻开本书阅读吧,相信一定不会让你失望。
——深圳市某大型国企信息化设计与管理资深工程师 林进彬
有幸受邀阅读了本书,第一感觉是内容非常丰富,图解的讲解方式非常直观,实例非常生动,涵盖的算法很多,讲解也很详细。相信每位认真阅读本书的读者都会从中学到非常有用的算法知识,从而提升自己对计算机算法与程序设计的认知。
——深圳市大数据研究院工程师/资深国家专利发明人 周富强
“
评论
还没有评论。