怎么学好数据结构?

137657283

最近在学习数据结构,虽然大学的时候,每个老师都说数据结构很重要。包括对我们找工作、代码的逻辑性都起决定性作用。但最后还是没有多少人学好了数据结构,包括我。所以代价就是,工作的时候又得抽时间重新来一遍。


入门学习数据结构时应主要是这两个过程:

  • 选择一本合适的书。(初学者应从C语言实现开始学习)
  • 编程实现和应用。(不断的刷题、看课程、同时做实验)


1.阅读书籍

一定要看书,一定要看书。数据结构和语言不一样,他不是锻炼我们编程能力,更多时候考察的是我们逻辑问题,也就是一种优化。


若果是纯小白的话:建议去图书馆借一本大学的比较薄一些的教材《数据结构》,然后建议尽量快的往后学习。如果一个知识点实在不懂,就可以跳过,学习到后面与前面知识点联系起来,说不定你会觉得很简单。



如果本来就有基础的话,就可以选择另一本比较经典的教材。这本书里面使用的代码,不是所谓的伪代码,而是正经可以运行的C代码,所以新人如果能照着做一遍下来,收获应该不小。


2.在线视频

数据结构有些问题是比较抽象的问题,所以当我们遇到不懂的部分的时候,如果有视频通过动态的讲解,能更好的帮助我们理解一个知识点。其次,现在网络课程非常发达,其实网上的数据结构的课程也已经足够我们理解、学习和分析了。

这里我放几个关于数据结构的课程:

(1) 小甲鱼(https://www.bilibili.com/video/av2975983?from=search&seid=5449026242951100793)


(2)严蔚敏数据结构视频教程(https://www.bilibili.com/video/av6239731?from=search&seid=5449026242951100793)

(3)中国大学MOOC

每个学期都会定期开课,但是开课的时间不固定,并且有期限。所以一旦跟了哪个老师,就一定要坚持下来,慢慢学完。

3.实现与应用

每学习完一个部分,都要尝试着不看书,写出来。这样子学过的东西才能真正变成自己的东西。这里我推荐一个实验课程,实验不多,但也能锻炼我们的动手能力。

实验楼数据结构实验(https://www.shiyanlou.com/courses/20)



路人甲M

2、详细研究栈、哈希表(字典)。栈这个东西在计算机中处处能见到,理解了栈对于理解计算机本身很有好处,记得尝试用栈的观点来看计算机。字典就不说了,我想绝大多数的人都查过字典,应该知道字典有什么用,想象一下没有字典的话,从成千上万个字中找到你想要的时有多痛苦。3、完全弄明白时间复杂度、空间复杂度是怎么回事。理解这一点可以让你自己在写代码时不至于写出有明显效率问题的代码,默默的提高你的代码质量。4、上手实际项目,积累项目经验,看看项目哪里用到了你所知道的数据结构和算法,搞清楚为什么用,能不能用另一种数据结构或算法让它变得更好。5、一两年过后回头再翻数据结构和算法的经典书籍,看看那些你曾经粗读过的内容,我想你会看得很愉快的。最后,记得手边常备一本讲数据结构和算法的书,方便你想到时当手册查查,我个人推荐《大话数据结构》

爱电脑的金良哥

个人经验学习很多计算机基础课都建议遵从这一点,先抓主干知识,解决主要矛盾

在数据结构领域,要先把精力花在各个数据结构的特点(结构和何时使用上)

比如:

为什么有了数组还要有链表 ?

树结构比上述二者存储数据上什么不同?(插入删除查找复杂度的权衡?)

为什么在一般二叉搜索树的基础上又要有各种平衡二叉搜索树,他们之间有什么不同?

堆用在什么场景下存数据?哈希表用在什么场景?

了解这些数据结构产生的原因和使用的场景,自然也就需要知道他们的结构以及最重要的他们的插入、删除、查找的时间复杂度是什么,代价是什么(比如更多的空间),能带来的特殊性是什么(比如堆O(1)时间获取最大值/最小值)?

在了解了数据结构的特点之后,建议先学习在你熟悉的那门语言中怎么使用它。

比如C++ vector, list, stack, queue, set, map, unordered_set, unordered_map, priority_queue 底层都是什么数据结构,在什么场景下使用,怎样使用?配合着做一些题目,也就掌握了。

先抓主干知识的含义就是不要一上来就钻研在比如一个红黑树左旋右旋的细节或者各种各样哈希函数的细节或者快排到底有多少种优化(很多国内数据结构课程在这上面花很大的功夫)。这不是说他们不重要,而是需要在主干建立起来之后,在根据自己的需要丰富细节。一开始就钻在细节里,很可能会造成学得云里雾里...学完了也不知道这门课到底是要干嘛的...


HakunaMatata04

强推浙大刘越还有清华邓俊辉的公开课。学时候配套看刘越的数据结构课本看完做配套的习题集。然后买数据结构和算法分析那本黑书或者算法第四版。一般高校发的那本清华出版的书反而不推荐,感觉入门晦涩难懂。开始提升兴趣可以看看大话数据结构。最后可以买一些算法竞赛的习题集做练习。


前进中的程序员

俗话说师傅领进门,修行靠个人,所以首先得有个师傅才行,读了大学你会发现讲的好的老师和讲的差的老师,真是差别太大了,所以很多东西并不是它本身很难,而是很多人压根自己就没学懂,难道你还能指望他讲明白,讲的通俗易懂,怎么可能?

推荐中国大学mooc上浙江大学的那门《数据结构》公开课,包你满意,正好3月份才开课,听听课,刷刷题,一代大神也许就这样诞生了。


游戏小宅

首先你需要掌握一门语言,不需要太深,会用就行,因为你需要动手去实现它们,初学者还是建议学习C语言

在学习的过程中在理解概念的前提下,一定要多动手敲代码,加深印象,深刻理解

最后可以看一些书籍辅助理解


趣谈编程

数据机构和算法是密切相关的吧!

所以,个人感觉,还是要依托一种具体的语言,通过代码来实现以下会比较好,纯粹理论的东西没什么用,学习的目的还是在于运用!


码农传奇

数据结构个人觉得是计算机专业课中最难的,有些时候你看人家的操作算法设计,你也理解,但为啥自己弄不出来,还是学的少,看我发的视频吧,还会有斯坦福大学的算法,最近一段时间发,加油吧!


分享到:


相關文章: