如何学习数据结构和算法
首先掌握常用的、基础的。然后在此基础上往进行扩展学习。
常用的、基础的数据结构和算法有20个。
数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie树
算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法。
这些需要一一攻克。
多思考,多想。往往需要灵魂三问,是什么?有什么用?怎么用?用来解决哪些实际问题?
当然了,你也可以思考一下为啥要学习这门课程?
什么是数据结构?什么是算法?
广义:数据结构就是一组存储结构。算法就是操作数据的一组方法
狭义:数据结构和算法,是指某些特殊的数据结构和算法,比如:队列、栈、堆、二分查找、动态规划等。这些都是前人的智慧结晶,我们可以直接拿来用的。这些经典的数据结构和算法,都是前人从很多实际操作场景中抽象出来的,经过非常多的求证和检验,可以高效的帮助我们解决很多实际的开发问题
这个问题非常经典,还是第一次看到这个问题。
数据结构和算法有什么关系,为什么大部分书籍都把这两个东西放到一块来讲呢?
数据结构和算法是相辅相成的,数据结构是为算法服务的,算法需要作用在特定的数据结构上。因此,无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构
例如:数组具有随机访问的特点,常用的二分查找算法需要数组来存储数据。如果选择链表这种数据结构,二分查找法就无法工作了,因为链表并不支持算计访问
学习数据常用的、基础的数据结构只用有高中数学水平即可。
学习的重点在什么地方?
数据结构和算法,很多人都很头疼,我也一样,里面的东西太多了,又不知道从何处下手学习,往往事倍公半。首先需要梳理一下有哪些知识点,应该先学什么,后学什么,在对照你属于哪一个阶段,针对性的进行学习
想要学好数据结构和算法,首先要掌握一个数据结构与算法中最重要的一个概念 -- 复杂度分析。
这个概念有多重要呢?可以这么说,它几乎占了数据结构和算法的半壁江山,是数据结构和算法的精髓。
数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。所以你只有掌握了数据结构和算法的特点,用法,但是没有学会复杂度分析方法,那就相当于只知道操作口诀,而没有掌握心法。只有心法了然于心,才能无招胜有招。
数据结构和算法涵盖的知识点:
在学习的过程当中,不要死记硬背,不要为了学习而学习,而是要学习它的“来历”、“自身的特点”、“适合解决哪些问题”以及“实际应用场景”。
一些学习技巧:
1、边学边练,适度刷题
可以适度刷题,但不要花费太多时间,学习的目的还是掌握,然后应用
2、多问、多思考、多互动
3、打怪升级法
设立一个切实可行的目标,不断的点亮你的技能点。不可能一口吃个胖子
4、知识需要沉淀,不要试图一下子掌握所有
学习是一个反复迭代的过程,不断沉积的过程
摘自:数据结构与算法之美 -- 王争