什么是数据结构和算法?
算法从简单层面理解是一组数据的存储结构,而算法是操作这组数组的方法。 数据结构是为算法服务的,而算法要作用于特定的数据结构之上。
数据和算法的全局概览图
里面分为基础的和高级,我作为一个初级小白,学好初级的算法是为了更高级的算法铺路。
基础的数据结构和算法有哪些?
10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树; 10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。
能将这基础的十个学扎实,并能灵活处理应用之后,就已经可以应试国内大部分公司的算法题了。 而且能将这些基础的算法思想理解透彻的话,再去学习高级的算法,也会容易很多。
为什么要学习数据结构和算法?
在当今,不管你是业务开发工程师,还是基础架构工程师;不管你是初入职场的初级工程师,还是工作多年的资深架构师,又或者是想转人工智能、区块链这些热门领域的程序员,数据结构与算法作为计算机的基础知识、核心知识,都是必须要掌握的。
其次,高手之间的竞争在于细节,我们经常讨论高大上的框架等等,有些设计出来的框架很通用,扩展性好,性能高,而有些人设计出来的框架仅仅只是能运行。我们学习数据结构和算法,一方面不仅是为了提升我们的内功,避免在写代码的过程中写出很多高复杂性的代码,影响性能。
最后,学习数据结构算法,最重要的是大公司的面试,无论是BAT,还是老美的公司,老美的公司都喜欢考数据结构和算法,业务代码很多人都可以写。但是相比短期能力,他们更看中你的长期潜力。
如何学习数据结构和算法?
1.“边学边练”
我们学习的一个很大的目的,就是学以致用。不光是在于理解理论知识之后,我们还能解出具体的算法题,练习的过程中也很大的锻炼了我们的思维,将我们学习的理论知识去落地实现,也能加深我们的印象和记忆。
2.“多总结、多思考”
学习是一个沉淀的过程,学完之后,能将学到的东西,说明白,搞清其中的原理,这些都是自己沉淀的过程。 多思考是举一反三,我们不要死记硬背,学的过程中针对某个算法题会解出,但是相似的题目变个形,就不会了,这种就是假学会,如果明白了其中的原理,真正的内涵学到了心中,就能以不变应万变。
3.“保持一个良好的精力”
数据结构和算法是一个蛮枯燥乏味的课程,学习和理解需要有很大的耐心,这样的课程容易走神。我建议每个人的学习可以选自己精力最旺盛,注意力相对集中的时候,这样子往往能事半功倍。
总结
路漫漫其修远兮,吾将上下而求索。