学习数据结构和算法心得

通过一段时间的数据结构与算法的学习,和学习了前人的经验,为了更好的指导本身(但愿也能帮助到别人)以后数据结构与算法的学习,总结一下数据结构与算法学习的方法。以及推荐你们看看一套学习教程,有助于快速入门:https://4m.cn/7MHVd
1、记住数据结构,记住算法思想(是什么)算法

我以为这个是数据结构与算法学习最基础的部分。
学完以后,你至少得能给人说明白,什么是”堆栈“,什么是”平衡二叉树“等等等吧。我之因此说”记住“,是但愿这些可以造成长久记忆,存储到你的”硬盘“里,而不单单在学习的时候过了一遍你的”内存“。还有一个问题,什么才叫”记住数据结构“。我以为,第一步,数据结构最直观的东西你得记住吧(如标题背景图,来自数据结构和算法动态可视化 (Chinese))。这种直观的记忆可能在不知不觉中就完成了,但为了更好的记住,还需去刻意记忆和偶尔的复习。第二步,你得记忆该数据结构的定义与性质与特色等等等吧。例如,学习哈夫曼树的时候。哈夫曼树的定义:WPL(带权路径长度)最小的二叉树;哈夫曼树的特色:(1)没有度为1的结点(2)n个叶子结点的哈夫曼树共有2n-1个结点(3)哈夫曼树的任意非叶节点的左右子树交换后还是哈夫曼树。关于”数据结构“,须要记忆的内容也须要本身在其中慢慢领悟。
至于”记住算法思想“,举个例子,思考咱们如何构造一个”哈夫曼树“。固然,在知道它的定义后,咱们能够本身去设计一个算法。若是,本身能够想出来,恭喜你。若是本身没想到,再看到先人的解决办法后,不是仅仅“惊叹”一声,更要去记住它。
我强调“记住”,并无死记硬背的意思,而是,不少东西的理解和创新都是以记忆为前提的。编程

2、进行大量相关编程练习,用编程语言去实现某一数据结构上的算法(怎么办)
就我而言,这个过程是最难的。不少时候,理解一个算法很容易,很容易在纸上去模拟一个算法的实现过程。但,具体实现,则是另外一回事。必定得先本身思考,而后再去看书中给的编程语言实现。在我看来,这一过程已经不属于“数据结构与算法”的内容了。而是你综合素质的体现,如何真正理解问题和用编程技巧实现,很考验本身。这一过程,很难靠记忆。而在不断敲代码的过程当中去体会一些直觉上的东西。如何用递归解决问题,如何使用循环,如何使用"哨兵”等等等等。固然,敲完后须要去思考总结,看看能不能总结出一些”小套路“并记住。数据结构

3、”记住“特定情景下,利用某一特定的数据结构,去解决问题 (为何+怎么办)
每介绍一种数据结构,浙大数据结构与算法的MOOC课程都会有一个实际问题来做为“引子”,回答了“这种数据结构为何会出现”。有的是为了实现特定的操做,有的是为了时间和空间上(大部分考虑的是时间复杂性)效率的更高(因此,没事的时候,分析一下算法的时间复杂性)。这些东西,咱们也须理解记忆。每一数据结构都有其特性,去解决某一类问题,咱们须要去记忆,去感悟。
最后,在学习过程当中,如何造成一个属于本身的知识体系(准备在“印象笔记”中单开一个“数据结构与算法”的笔记本);如何去“记住”(记好笔记,多多复习);在学习过程当中,遇到挫折,产生挫败感该如何处理(这个是必然会发生的,总有难以理解不会的地方);如何进行心态方面的调整(欲速则不达,不过也有”敏捷学习“的概念)。固然这边能够推荐你们看看这套教程, 让你少走弯路,少花时间 :4m.cn/7MHVd数据结构和算法

相关文章
相关标签/搜索