数据结构与算法之导言

写这篇文章的时候,已经工作一年多了,在学校的时候当初应为项目接触较少,在学习数据结构的时候,不能很清楚的认识到数据结构对于一个程序员的重要性!当然,其实在真正的开发中,能对数据结构及算法加以利用的地方确实为数不多。作为一个Android工程师(应该还是个小白),日常开发中确实接触不多,更多的是一些对于一些框架使用,比如现在流行的架构(Rxjava+retrofit+okHttp+Glide+Dagger2)。相对于框架,数据结构和算法像是我们的内功,当我们的内功达到一定境界的时候,外功的修炼也会相应的轻松很多,外功修炼到一定境界的时候也是需要内功的辅助的。所以打算重拾内功,精进外功。

文章是针对极客时间的专栏--数据结构与算法之美进行的归纳总结,如有错误,欢迎指正。


首先划下重点。
以下20个重要的知识点:
10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树。
10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法,分治算法、回溯算法、动态规划、字符串匹配算法。

掌握这些,我们应该就能应付大多数的场景了,另外一些特殊的场景,我们只需要再根据实际情况去具体分析了解就行。


接下来说下什么是数据结构与算法:
从广义上来说:数据结构就是指一组数据的存储结构;算法就是用来操作数据的一组方法。
两者的关系:算法与数据结构是相辅相成的,数据结构是为算法服务的,而算法则是要作用在特定数据结构之上。

数据结构与算法的前菜:复杂度分析(时间复杂度,空间复杂度),重中之重。

说下自己的理解。数据结构与算法解决的就是更快处理速度,与更小的空间的问题。不同的数据结构与算法的应用场景不同,我们需要根据特定的需求去寻找最优的解决方案。所以说,我们光掌握还不行,还需要在实际的应用场景中去思考,才能更加灵活的运用。

学习技巧:
1.边学习边练习,剑指offo练练题
2.坚持
3.不要想着学完我就能应用上,知识沉淀是一个相对漫长的过程,我们要享受这个过程,而不要想着学习立马能给我们带来正反馈。

希望还在大学中的,要重视起来,像大学中学习的《计算机网络》《数据结构》《算法》《计算机组成原理》现在看来是相当重要的,知其然的同时知其所以然。
同时阅读源码也是一个很好的习惯,能学习到优秀源码中的代码风格,设计模式。

最后附上数据结构和算法的知识图谱:


数据结构和算法知识图谱.jpg

你可能感兴趣的:(数据结构与算法之导言)