我们作为计算机学习者,数据结构、算法是我们必须学习的,更应该打好基础,在学习过程中,需要多积累,多调试,多总结。
    随着前端工程师的人数激增,尤其是最近几年学前端的人会越来越多,再加上前端的范围越来越广,从前端发展为全栈,数据结构和算法的功底要求势必将越来越高。所以,前端开发人员不能仅仅局限于切页面和实现几个效果的范围,非常有必要补一补算法功底。推荐学习《学习JavaScript数据结构与算法第3版》。
    《学习JavaScript数据结构与算法第3版》首先介绍了JavaScript语言的基础知识(包括ECMAScript和TypeScript),其次讨论了数组、栈、队列、双端队列和链表等重要的数据结构,随后分析了集合、字典和散列表的工作原理,接下来阐述了递归的原理、什么是树以及二叉堆和堆排序,然后介绍了图、DFS和BFS算法、各种排序(冒泡排序、选择排序、插入排序、归并排序、快速排序、计数排序、桶排序和基数排序)和搜索(顺序搜索、二分搜索和内插搜索)算法以及随机算法,接着介绍了分而治之、动态规划、贪心算法和回溯算法等高级算法以及函数式编程,最后还介绍了如何计算算法的复杂度。
    《学习JavaScript数据结构与算法第3版》中文PDF+英文PDF+源代码
    《学习JavaScript数据结构与算法第3版》中文PDF,314页,带书签目录,文字可复制;英文PDF,566页,带书签目录,文字可复制。配套源代码。
    下载: https://pan.baidu.com/s/1c1Hh8KIRv-J8IkU9zjmZFg
    提取码: a7mx
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图1
    介绍的比较基础,也比较详细,个人认为西方的作者都比较负责,写书也是娓娓道来,引人入境(当然也不全是所有的作者都这样)。代码每一句都进行了解释,适合学习。
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图2
    学习软件编程或者某门语言,都必须掌握数据结构和常规算法。数据结构与算法都能够从常识推导出来的,数学符号只是一种特定的语言,数学里的一切都是可以用常识去解释的。
    《数据结构与算法图解》是数据结构与算法的入门指南,不局限于某种特定语言,略过复杂的数学公式,用通俗易懂的方式针对编程初学者介绍数据结构与算法的基本概念,培养编程逻辑。主要内容包括:为什么要了解数据结构与算法,大O表示法及其代码优化利用,栈、队列的合理使用等。
    《数据结构与算法图解》中文PDF+英文PDF+源代码
    《数据结构与算法图解》中文PDF,174页,带目录,文字可以复制;英文PDF,203页,带目录,文字可以复制;配套源代码。作者: [美]杰伊温格罗 译者: 袁志鹏
    下载: https://pan.baidu.com/s/1-UCvVueM9gDG-lUP96FIzA
    提取码: 4jht
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图3
    阅读得按顺序,从第1章开始读起,全书内容确实是精心安排的,理解一个复杂概念的最好方法就是把它拆分成小块,并且在完全明白某一块以后才去着手其他部分。为了便于理解,把一个概念先极度简化,然后再一步步去完善,这就导致了有些句子写得不够彻底、不够学术,或不够精确。但无须担心,到最后一定能对它有一个完整的印象。
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图4
    入门算法,推荐参考《我的第一本算法书》。
    《我的第一本算法书》采用大量图片,通过详细的分步讲解,以直观、易懂的方式展现了7个数据结构和26个基础算法的基本原理。第1章介绍了链表、数组、栈等7个数据结构;从第2章到第7章,分别介绍了和排序、查找、图论、安全、聚类等相关的26个基础算法,内容涉及冒泡排序、二分查找、广度优先搜索、哈希函数、迪菲 - 赫尔曼密钥交换、k-means 算法等。
    《我的第一本算法书》PDF,210页,彩色配图,带书签目录,文字可以复制。
    下载: https://pan.baidu.com/s/1KQ9XTwB9WGEq6JQGcFKdlg
    提取码: hq5a
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图5
    《我的第一本算法书》读了之后受益匪浅。 其实常见算法,到处都有实现,许多语言都封装好,可以直接调用。 一些新语言,比如kotlin,已经在写法上模糊了数组和链表,都用上下标。对于普通码农来说“用”常见算法似乎不成问题。 但是不是真的完全清晰的理解了呢? 这本书看起来非常快,但看完之后,又觉得不过瘾,时不时会回翻。 本书的优点在于,让你能非常清晰的,真正的了解那些算法的步骤。
    “程序=数据结构+算法” 意思是数据结构是程序骨架,算法是程序灵魂。即使是科班出身的程序员,能把数据结构和算法掌握好不是一件容易的事。《算法图解》很薄,很简单,也好看,图示法表达可将复杂抽象的理论,阐释的通俗易懂,但也仅仅限入科普性质的入门。
    《算法图解》高清中文PDF+英文PDF+源代码
    《算法图解》中文PDF,199页,带目录,文字可以复制。《算法图解》英文PDF,258页,带目录,文字可以复制。配套源代码。
    下载: https://pan.baidu.com/s/13yBnjwqG-WmDv_ve8owyMA
    提取码: 1gpy
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图6
    最大的特点是图多,在每一章节之前会设定一个场景问题,从而引入合适的算法去求解。《算法图解》示例丰富,图文并茂,以让人容易理解的方式阐释了算法,旨在帮助程序员在日常项目中更好地发挥算法的能量。前三章将帮助打下基础,学习二分查找、大O表示法、两种基本的数据结构以及递归等。余下的篇幅将主要介绍应用广泛的算法,具体内容包括:面对具体问题时的解决技巧,比如,何时采用贪婪算法或动态规划;散列表的应用;图算法;K最近邻算法。
    我们所有人的生活都受到有限空间和有限时间的限制,因此常常面临一系列难以抉择的问题。在一天或者一生的时光里,哪些事是我们应该做的,哪些是应该放弃的?我们对杂乱无序的容忍底线是什么?新的活动与熟悉并喜爱的活动之间如何平衡,才能取得令人愉快的结果?这些看似是人类特有的难题,其实不然,因为计算机也面临同样的问题,计算机科学家几十年来也一直在努力解决这些问题,而他们找到的解决方案可以给我们很多启发。
    《算法之美:指导工作与生活的算法》中文PDF+英文PDF
    中文PDF,带书签目录,504页,文字可以复制。英文PDF,带书签目录,300页,文字可以复制。
    下载: https://pan.baidu.com/s/15JcW4X_bqj36vlQqctv07g
    提取码: 6wns
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图7
    通过丰富的跨学科研究,《算法之美:指导工作与生活的算法》指出,计算机算法也可以用来解答人类面临的这些问题。这本书告诉我们如何更有效地利用直觉、什么时候应该把选择权交给命运、无所适从的时候应该如何做出选择,以及如何有效地与他人保持联系。从找配偶到找停车位,从组织管理个人邮箱的收件箱到理解人类记忆的作用原理,这本书把计算机科学的智慧转化为人类生活的策略,引导我们做出明智的选择。
    也可以学习国内作者写的,《算法新解》分4 部分,同时用函数式和传统方法介绍主要的基本算法和数据结构。数据结构部分包括二叉树、红黑树、AVL 树、Trie、Patricia、后缀树、B 树、二叉堆、二项式堆、斐波那契堆、配对堆、队列、序列等;基本算法部分包括各种排序算法、序列搜索算法、字符串匹配算法(KMP 等)、深度优先与广度优先搜索算法、贪心算法以及动态规划。
    《算法新解》PDF+《趣学算法》PDF
    《算法新解》PDF,刘新宇著,538页,带书签目录,文字可以复制。《趣学算法》PDF,陈小玉著,608页,带书签目录,文字可以复制。
    下载: https://pan.baidu.com/s/10RJ66pV1BDO-AFCdmHyfNw
    提取码: 6pt4
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图8
    《趣学算法》按照算法策略分为7章。第1章从算法之美、简单小问题、趣味故事引入算法概念、时间复杂度、空间复杂度的概念和计算方法,以及算法设计的爆炸性增量问题,使读者体验算法的奥妙。第2~7章介绍经典算法的设计策略、实战演练、算法分析及优化拓展,分别讲解贪心算法、分治算法、动态规划、回溯法、分支限界法、线性规划和网络流。
    《算法神探》中英文PDF+《算法谜题》中英文PDF
    《算法谜题》中文PDF,271页,带书签,文字可复制;英文PDF,280页,带目录,文字可复制。《算法神探》中文PDF,242页,带目录,文字可复制;《算法神探》英文PDF,259页,带目录,文字可复制。
    下载: https://pan.baidu.com/s/1SlMM2qNNX6Kb9TWTDr5Olg
    提取码: mg8b
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图9

    《算法神探:一部谷歌首席工程师写的CS小说》围绕程序设计典型算法,精心编织了一个扣人心弦又趣味横生的侦探缉凶故事。小说主人公运用高超的搜索技巧和精深的算法知识,最终识破阴谋、缉拿元凶。其间,用二分搜索搜查走私船、用搜索树跟踪间谍、用深度优先搜索逃离监狱、用优先队列开锁及用最佳优先搜索追寻线索等跌宕起伏又富含算法精要的情节,让读者在愉悦的沉浸式体验中快速提升境界,加深对程序世界的理解。
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图10
    《算法谜题》分为4个部分,分别是概览、谜题、提示和答案。概览介绍了算法设计的通用策略和算法分析的技术,还附带有不少的实例。谜题部分将谜题按照简单、中等难度和较难三个层级分别列出。提示部分依次给出谜题提示,帮助读者找到正确的解题方向,同时仍然为读者留下了独立求解的空间。答案部分则给出了谜题的详细解答。
    《算法笔记》PDF+《AI算法工程师手册》PDF
    《算法笔记》PDF,183页,带书签目录,文字可以复制。《AI算法工程师手册》PDF,1440页,文字可以复制。
    下载: https://pan.baidu.com/s/1qY68VVaKmD8I9qvhmNTeVg
    提取码: jy2p
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图11
    学习算法的一本不错的参考书,《算法笔记》介绍了若干常见算法,既包括排序、哈希等基础算法,也包括无约束优化、插值与拟合等数值计算方法。《算法笔记》在介绍算法的同时,结合了作者自己对数学背景、应用场景的理解,便于把握算法的核心思想。《算法笔记》尽可能地避开了以应试为导向的灌输式讲解,力求引起兴趣并扩大其视野,例如在介绍哈希时,讲解了如何将哈希的算法思想运用于相似性搜索、负载均衡等多个实际问题中;又如在介绍高斯消去法时,讲解了相关的数学理论及编程实现上的具体技巧,并将其运用于对大规模稀疏线性方程组的求解,等等。
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图12
    在计算机领域,算法是一个永恒的主题。塞奇威克 (Robert Sedgewick) 的算法第4版,是为在校学生量身打造的。没有数学基础?没关系,只要你在高中学过了数学归纳法,那么书中95%以上的数学内容你都可以看得懂,更何况书中还辅以大量图例。没学过编程?没关系,第1章会给大家介绍足够多的Java知识,即使你不是计算机专业的学生,也不会遇到困难。整本书的内容编排循序渐进,由易到难,前后呼应,足见作者的良苦用心。没有比本书更专业的算法教科书了。
    Sedgewick《算法第4版》PDF+源代码
    《算法第4版》PDF,678页,带目录,文字可复制;配套源代码。
    下载: https://pan.baidu.com/s/1yT0n5Wekt-5wAgNrj0eXOQ
    提取码: ks3m
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图13
    我读的感觉是,讲得很细致,很透彻,相较算法导论要细致很多。另外,CLRS侧重于数学推导的,更加侧重算法的实现。
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图14
    《OAuth 2实战》应该是目前市面上第一本关于OAuth2的书籍,翻译得不错,读起来顺畅。书的内容也很好,全程实现OAuth涉及的所有组件,对着书中的内容实现了一遍,学到了很多。想了解OAuth学,强烈推荐。
    《OAuth 2实战》中文PDF+英文PDF+源代码
    《OAuth 2实战》中文PDF,302页,带书签目录,文字可复制。《OAuth 2实战》英文PDF,566页,带书签目录,文字可复制。配套源代码。
    下载: https://pan.baidu.com/s/1B4NSvV0eo8rSpawrtvv4vw
    提取码: u76m
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图15
    深入探讨OAuth的运行机制,详细介绍如何在不安全的网络环境下正确使用、部署OAuth,确保安全认证,是目前关于OAuth最全面深入的参考资料。书中内容分为四大部分,分别概述OAuth 2.0协议,如何构建一个完整的OAuth 2.0生态系统,OAuth 2.0生态系统中各个部分可能出现的漏洞及其如何规避,以及更外围生态系统中的标准和规范。
    《OAuth 2实战》分为4个部分,总共16章。第一部分由第1~2章构成,概述了OAuth 2.0协议,可以说是核心阅读材料。第二部分由第3~6章构成,展示了如何构建一个完整的OAuth 2.0生态系统。第三部分由第7~10章构成,讨论了OAuth 2.0生态系统中各个部分可能出现的漏洞,以及如何规避。最后一部分由第11~16章构成,这一部分跳出OAuth 2.0协议的核心部分,探讨更外围生态系统中的标准和规范,最后还进行了总结。
    对比《学习JavaScript数据结构与算法第3版》PDF代码 《数据结构与算法图解》PDF代码分析 - 图16
    是老师的好帮手。如果老师们还只能照本宣科,只能停留在算法本身一二三四的阶段,那就已经大大落后于这个时代了。算法并不仅仅是计算的方法,探究算法的过程反映出的是我们对这个世界的认知方法:是唯唯诺诺地将课本当做圣经,还是通过“实验—失败—再实验”循环的锤炼?数学是保证,数据是验证。通过各种算法,从各个角度,多次说明了这个道理,这也正是第1章是全书内容最多的一章的原因。希不要错过第1章。无论有没有编程基础,都会从中得到有益的启示。
    在工作了多年之后,快速排序、霍夫曼编码、KMP等曾经熟悉的概念在你脑中是不是已经凋零成了一个个没有内涵的名词?是时候重新拾起它们了。无论是为手头的工作寻找线索,还是为下一份工作努力准备,这些算法基础知识都是你不能跳过的。强调软件工程中的最佳实践,特别适合已有工作经验的程序员朋友。所有的算法都是先有API,再有实现,之后是证明,最后是数据。这种先接口后实现、强调测试的做法,无疑是在工作中摸爬滚打多年的程序员最熟悉的。