通俗讲,对所有学习都适应:找到好的学习方法,抓住学习的重点。
如何找到好的学习方法?
如何抓住学习重点?
//自我认为基础很重要,目前是前人的总结出来的学习方法,学习窍门如何抓重点
首先是理解数据结构与算法概念上的理解:
从两方面看,广义,狭义。
广义:数据结构,是指一组数据的存储结构。算法,是指操作数据的一组方法。 狭义:也就是我们专栏要讲的,是指某些著名的数据结构和算法,比如队列、栈、堆、二分查找、动态规划等。
数据结构与算法关系:数据结构是为算法服务,算法要作用在特定的数据结构之上
数据结构是静态的,它只是组织数据的一种方式。如果不在它的基础上操作、构建算法,孤立存在的数据结构就是没用的。
作用:提高代码执行效率,节省内存存储空间。//ram:手机运行存储空间,rom:手机数据存储空间。
学习顺序:
1、首先要掌握一个数据结构与算法中最重要的概念——复杂度分析(是数据结构和算法的精髓)
数据结构和算法解决的是如何更省、更快地存储和处理数据的问题,因此,我们就需要一个考量效率和资源消耗的方法,这就是复杂度分析方法。所以,如果你只掌握了数据结构和算法的特点、用法,但是没有学会复杂度分析,那就相当于只知道操作口诀,而没掌握心法。只有把心法了然于胸,才能做到无招胜有招!//大篇幅讲,大力气啃,必须拿下,要搞的非常熟练
2、学会复杂度分析,就是算法和数据结构内容学习了。知识点内容上图:
学习要学会找重点,如果不分重点,学习起来很吃力。
接下来系统学习20个最常用,最基础的数据结构与算法。在以后的工作还是面试,只要集中精力逐一攻克这20个知识点就足矣。分别是,10个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树;10个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规则、字符串匹配算法。
掌握这些基础的数据结构和算法,在学习更加复杂的数据结构和算法就非常容易、非常快。
学习心法,窍门:学习过程中不要死记硬背,不要为学习而学习,而是要学习它的“来历”,“自身特点”,“适合解决的问题”,以及“实际的应用场景”。//感觉大有放之四海而皆准的道理
学习数据结构和算法的过程,是非常好的思维训练过程。所以,千万不要被动的记忆,要多辩证的思考,多问为什么。如果你一直坚持这么做,你会发现,等你学完之后,写代码的时候就会不由自主的考虑到很多性能方便的事情,时间复杂度,空间复杂度非常高的垃圾袋吗出现的次数越来越少。你的编程内功真正得到修炼。
分享一些事半功倍的小技巧:
①边学边练,“适度”刷题。 可以刷题,不要把太多时间在刷题上,学习的目的还是在掌握,然后应用。
②多问、多思考、多互动 学习最好的方法是,找几个人一起学习,一块讨论切磋,有问题及时寻找老师答疑。//可以在专栏找学习者,写下自己的疑问、思考、总结。经常看别人的留言,与之互动。 不懂一点不丢人,只要你勇敢提出来,一起解决就可以了
③打怪升级学习法 学习过程中,碰到最大的问题,就是坚持不下来。很多基础课程都非常的枯燥。就像打怪升级一样,我们在枯燥的学习过程中,也给自己设立一个切实可行的目标。只是累加迭代。学习一段时间,不仅能收获知识,还会有意想不到的成就感。因为,这其实帮你改掉了一点学习的坏习惯。这个坏习惯改掉,人生也就变的不一样了。
④知识需要沉淀,不要想试图一下子掌握所有 在学习过程中,一定会碰到"拦路虎",可以尽情的搜索问题的解决方案。如果哪个知识点没有学懂,不要着急,这是正常的。因为想听一遍,看一遍就把所有的知识都掌握,这肯定是不可能的。学习知识的过程是反复迭代、不断沉淀的过程。
如果碰到“拦路虎”,可以先沉淀一下,过几天再重新学一遍。所谓,书读百遍其义自见,很有道理。
内容小结:
划重点:数据结构和算法的重点与复杂度分析。还有就是一些学习技巧,学习方法,从今天开始要好好实践。
摘自--王争 数据结构与算法之美