什么是算法?简单来说,算法就是一系列用于计算或解决问题的步骤和规则。
那它跟程序有什么分别呢?我们可以把它想象成一份食谱:要想做出一道菜,就得按照食谱上的步骤操作;同样,要用计算机解决某个特定问题,也需要遵循算法。比如:“把一堆乱七八糟的数字按从小到大的顺序排列”,或者“找到从出发点到目的地的最短路径”,这些都可以用算法来解决。
不过,算法和食谱还是有个最大的不同——算法更加严谨。食谱里可能会写“适量盐”或者“煮到八成熟”,这些都挺模糊的,而算法的步骤都是用数学方式来描述的,所以十分明确。
有人可能会觉得算法和程序很像,确实如此,但两者还是有区别的。算法是用人类能理解的方式来描述的,通常是为编写程序做准备;而程序是用计算机能理解的编程语言写成的,可以直接在计算机上运行。当然,这两者之间也没有明确的分界线,某些时候它们会自然地交织在一起。
即便使用相同的算法,不同的编程语言写出来的程序也会各有千秋;就算用的是同一种语言,不同的人编写,程序的风格和实现细节也可能完全不同。这就是算法的魅力——严谨中带着灵活,规则中充满创造!
一本为所有人写的算法书
说真的,算法这东西,有的人学起来就像在看一部没字幕的烧脑电影,觉得晦涩难懂。你是不是也有过这样的时刻:死磕了一晚上动态规划,结果第二天连“子问题”是啥都忘了?算法题刷了一堆,脑子却还是一片空白?
如果上学时能有这样一本教程,那可太好了!而现在,这样的“神器”真的来了——《我的第一本算法书(修订版)》正是为解决这些痛点而生。
它用生动的图解和浅显易懂的语言,把复杂的算法拆解成一个个直观的图,让你像看漫画一样轻松地掌握算法的核心逻辑。再也不用担心“学了就忘”!
作为好玩又直观的算法入门准备教程。零基础程序员、文科生、高中生、大学生、非计算机专业但是想了解算法的职场人,这本书你们通通都适用。
为什么这么说呢?因为这本书有超多彩图,来图解算法,而且内容讲解得贼简单!之前让你似懂非懂的那些算法概念,以及糊成一团的操作步骤,这次都会突然地明朗起来。
600 多张图详解算法
总共有 8 章的内容,不要小看这 8 章,作者从基础的数据结构入手,涵盖链表、数组、栈、哈希表、队列、堆、二叉树查找等核心知识点。
以“栈”为例,作者用一个生动的比喻来解释:栈就像一摞书,新书总是放在书堆的最上面,而取书时也是从最上层开始。这种“后进先出”的特性,使栈在需要访问最新数据时显得尤为高效和便捷。
配上这个图,是不是真的很好理解!
第 2 章主要讲解排序。其中包括冒泡排序、选择排序、插入排序、堆排序、归并排序和快速排序。比如冒泡排序,作者是这样讲的:
冒泡排序就是重复“从序列右边开始比较相邻两个数字的大小,再根据结果交换两个数字的位置”这一操作的算法。在这个过程中,数字会像泡泡一样,慢慢从右往左“浮”到序列的顶端,所以这个算法才被称为“冒泡排序”。
通过图解,冒泡排序活跃在眼前,每个知识点后面还有作者的一个解说栏目,帮你加深印象。
第 3 章作者介绍了数组的查找,包括线性搜索和二分搜索。比如线性搜索。是一种在数组中查找数据的算法。与之前讲解的二分搜索不同,即便数据没有按顺序存储,也可以应用线性搜索。线性搜索的操作很简单,只要在数组中从头开始依次往下查找即可。虽然存储的数据类型没有限制,但为了便于理解,这里我们假设存储的是整数。
第 4 章主要讲解图算法,广度优先搜索、深度优先搜索、贝尔曼 - 福特算法、狄杰斯特拉算法、A*算法、狄杰斯特拉算法、普里姆算法、匹配算法等常用算法。
如果想优化线路图,那不如试试广度优先搜索。广度优先搜索是一种对图进行搜索的算法。
假设一开始我们位于某个顶点(即起点),此时并不知道图的整体结构,而我们的目的是从起点开始顺着边搜索,直到到达指定顶点(即终点)。
在此过程中每走到一个顶点,就会判断一次它是否为终点。广度优先搜索会优先从离起点近的顶点开始搜索。
而深度优先搜索则是会沿着一条路径不断往下搜索直到不能再继续为止,然后再折返,开始搜索下一条候补路径。
第 5-7 章,讲解了算法的一些应用,比如在安全领域密匙加密和数据压缩处理等方面的应用。
最后第 8 章,介绍了一些其他的算法,比如欧几里得算法、素性检验、字符串匹配、KMP 算法、汉诺塔等。好玩又有趣。这部分的内容就不给大家剧透了,留给大家自己去探索吧~
这本书不厚,作为知识梳理,读起来丝毫没有压力。
专属APP:动画交互让算法学习更简单
而且它还配有一个专属 APP,不管你是 iOS 用户还是 Android 用户,都可以在“算法动画图解”APP 上找到动画内容。
书中提到的各类算法,都可以在应用中通过动画交互的形式直观学习。部分算法还支持个性化设置,方便学习者尝试不同模式,探索其多样化的运行机制。将本书与应用结合使用,不仅能让学习更加生动,还能帮助大家更深入地理解相关知识。
如果你想试试,可以按照以下步骤下载应用,灵活使用,提升学习效果!
作者简介
石田保辉,自由职业工程师,现居日本东京。2011 年毕业于日本京都大学研究生院。辗转于几个创新型企业后独立,成为自由职业者。2016 年,个人制作的面向工程师的学习型 App“算法动画图解”上架,不到1年时间全球下载量即达到 50 万次,并入选了“App Store 日本区 2016 年度最佳应用”榜单。
宫崎修一,日本京都大学学术信息媒体中心副教授。1998 年从日本九州大学博士生院工学专业毕业后,开始担任日本京都大学研究生院信息学研究科助手, 2002 年起担任现职。主要研究算法和计算复杂性理论。近期的重点研究对象为相似算法和在线算法。主要著作有《程序员的数学4:图论入门》。
读者评价
@Sylvia :非常直观的通过图示的方式分解各算法每一步的变化,对于初学者来说非常友好。我同时配合《图解算法》一起看,效率非常高。
@无差跳海并收花:图很有吸引力,用来回忆基础知识很好的。不是我的第一本算法书,但却是最快能叫你回忆起概念的。
@空空如也:搞懂了之前一直看理论都搞不清楚的东西。我果然要举例子画图才能理解。。。
(评论来源:豆瓣)
这本书 238 页,全彩印刷,阅读体验很赞,而且有图又好懂,空暇时间读这本真是再好不过了!
如果最近你近期想梳理一下自己已经学杂了的算法,不如从这本书看起!
另外,我们还有读书专属社群,扫码加入,读书不孤单~