阅读得按顺序,从第1章开始读起,笔记内容确实是精心安排的,理解一个复杂概念的最好方法就是把它拆分成小块,并且在完全明白某一块以后才去着手其他部分。为了便于理解,把一个概念先极度简化,然后再一步步去完善,这就导致了有些句子写得不够彻底、不够学术,或不够精确。但无须担心,到最后一定能对它有一个完整的印象。
学习软件编程或者某门语言,都必须掌握数据结构和常规算法。数据结构与算法都能够从常识推导出来的,数学符号只是一种特定的语言,数学里的一切都是可以用常识去解释的。
《数据结构与算法图解》是数据结构与算法的入门指南,不局限于某种特定语言,略过复杂的数学公式,用通俗易懂的方式针对编程初学者介绍数据结构与算法的基本概念,培养编程逻辑。主要内容包括:为什么要了解数据结构与算法,大O表示法及其代码优化利用,栈、队列的合理使用等。
《数据结构与算法图解》中文PDF+英文PDF+源代码
《数据结构与算法图解》中文PDF,174页,带目录,文字可以复制;《数据结构与算法图解》英文PDF,203页,带目录,文字可以复制;配套源代码。作者:[美]杰伊温格罗译者:袁志鹏
《算法笔记》PDF+《AI算法工程师手册》PDF
《算法笔记》PDF,183页,带书签目录,文字可以复制。《AI算法工程师手册》PDF,1440页,文字可以复制。
《算法神探》中英文PDF+《算法谜题》中英文PDF
《算法谜题》中文PDF,271页,带书签,文字可以复制;英文PDF,280页,带书签目录,文字可以复制。《算法神探》中文PDF,242页,带书签目录,文字可以复制;《算法神探》英文PDF,259页,带书签目录,文字可以复制。
《算法谜题》分为4个部分,分别是概览、谜题、提示和答案。概览介绍了算法设计的通用策略和算法分析的技术,还附带有不少的实例。谜题部分将谜题按照简单、中等难度和较难三个层级分别列出。提示部分依次给出谜题提示,帮助读者找到正确的解题方向,同时仍然为读者留下了独立求解的空间。答案部分则给出了谜题的详细解答。
《算法图解》中文PDF+英文PDF+源代码
《算法新解》中文PDF+《趣学算法》中文PDF
《算法新解》中文PDF,刘新宇著,538页,带书签目录,文字可以复制。《趣学算法》中文PDF,陈小玉著,608页,带书签目录,文字可以复制。
《算法之美:指导工作与生活的算法》中文PDF+英文PDF
英文名:AlgorithmstoLiveBy:TheComputerScienceofHumanDecisions中文PDF,带书签目录,504页,文字可以复制。英文PDF,带书签目录,300页,文字可以复制。作者:[美]布莱恩·克里斯汀/[美]汤姆·格里菲思
《我的第一本算法书》读了之后受益匪浅。其实常见算法,到处都有实现,许多语言都封装好,可以直接调用。一些新语言,比如kotlin,已经在写法上模糊了数组和链表,都用上下标。对于普通码农来说“用”常见算法似乎不成问题。但是不是真的完全清晰的理解了呢?这本书看起来非常快,但看完之后,又觉得不过瘾,时不时会回翻。本书的优点在于,让你能非常清晰的,真正的了解那些算法的步骤。
Sedgewick《算法第4版》PDF+源代码
普林斯顿Sedgewick的名著,作为Knuth的学生,这一派的算法分析的思路一脉相承。javabased不用担心,第一章讲的都是java,还算比较简练的,把一些主要内容都说清楚了。一开始我也是不太懂java的语法的,顺便我就学了一下java。既然是作为初入算法,语言是什么并不重要,最重要的是能把算法提出和算法思路讲清楚。我读的感觉是,讲得很细致,很透彻,相较算法导论要细致很多。另外,CLRS侧重于数学推导的,更加侧重算法的实现。
随着前端工程师的人数激增,尤其是最近几年学前端的人会越来越多,再加上前端的范围越来越广,从前端发展为全栈,数据结构和算法的功底要求势必将越来越高。所以,前端开发人员不能仅仅局限于切页面和实现几个效果的范围,非常有必要补一补算法功底。推荐学习《学习JavaScript数据结构与算法第3版》。
《学习JavaScript数据结构与算法第3版》首先介绍了JavaScript语言的基础知识(包括ECMAScript和TypeScript),其次讨论了数组、栈、队列、双端队列和链表等重要的数据结构,随后分析了集合、字典和散列表的工作原理,接下来阐述了递归的原理、什么是树以及二叉堆和堆排序,然后介绍了图、DFS和BFS算法、各种排序(冒泡排序、选择排序、插入排序、归并排序、快速排序、计数排序、桶排序和基数排序)和搜索(顺序搜索、二分搜索和内插搜索)算法以及随机算法,接着介绍了分而治之、动态规划、贪心算法和回溯算法等高级算法以及函数式编程,最后还介绍了如何计算算法的复杂度。
介绍的比较基础,也比较详细,个人认为西方的作者都比较负责,写书也是娓娓道来,引人入境(当然也不全是所有的作者都这样)。代码每一句都进行了解释,适合学习。