如题吧。目前大一,感觉学习遇到了瓶颈。
起因:渣学校的数据结构教学太水,因此从图书馆借了相关书籍开始自学( 《数据结构与算法分析—— c++描述》)。
当前进度,刚看完了 AVL 树,学习伸展树 ing。
问题 1:学习过程好枯燥啊(目前是啃书加实现),时间长了学习效率非常底下,而且会忘😂,有什么好的学习方法吗?刷题怎么样?
问题 2:现在这个阶段把很多精力放在数据结构上合适吗?大家在这个阶段都是怎么安排学习时间的?
1
Stoulla 2019-04-26 17:23:55 +08:00 5
事实上刷题你根本用不上这些数据结构, 如红黑树一类. 刚开始学习肯定是会很枯燥的,这必然是需要经历的一个过程.
但如果你想更有趣一些, 不妨试着找一找具体的应用场景, 以及数据结构的相关性. 比如, 以 AVL 树举例. 1. 为什么提出了 AVL 树, AVL 树有什么缺点. 对 AVL 树的缺点和优点, 我们有什么相关的扩展呢? --> 找到红黑树, Trie 树, Van Emde Boas 树. B 树等. 下面以红黑树举例. 2. 红黑树多用于什么场景呢? 举例 ,比如 STL 中的 set 和 map 就大量运用了红黑树, 而不是 AVL 树.为什么它们要采用红黑树呢? 3. 参照相关实现, 尝试去自己实现一下 STL 中的 map. 可以参考源码, 但我觉得可能对于大一的你来说难度可能太大. 因此推荐阅读, 而不是自己实现. 建议: 数据结构的学习,枯燥的原因是因为你现在了解的太少, 等于刚入门, 无法将具体的应用需求和所学的联系起来.但这是老师和网络上的任何教程都无法解决的问题, 这需要你自己去摸索. 因此我建议你啊, 当看故事一样, 先了解一下各个算法提出的背景, 以及它们所解决的问题. 然后再在实际解决问题中去进行深入的理解. 数据结构属于超基础的东西, 但是也是超重要的. 所以必须啃精. 我因为本科没学好现在都还在还债呢. 刷题的话, 个人建议不要把刷题当成是学数据结构的动力. 这东西, 更多的锻炼的是一种思维方式,对于高深的,代码量较大的数据结构是不会有涉及的. 如果觉得老师讲得不好, 可以参考一下 MIT 的课程, 6.006 和 6.046. 吐槽: 大一就这么勤奋了, 蛮羡慕的. 我大一的时候可真是峡谷一霸,打的那叫一个醉生梦死- -. 祝你好运~~ |
4
lhx2008 2019-04-26 17:47:56 +08:00 via Android
非科班,我倒没有啃,因为基本所有语言的 container 都已经实现了,就当看过一遍了解一下
|
5
Stoulla 2019-04-26 18:04:56 +08:00
#3 GUI 的实现那是另一个课题. 如果不想从事这方面的一直不学都没关系. 另外, 编程的话最快的实际收益还是自己找一些小项目进行实现, 但是你现在属于刚入门, 所以... 个人看法是, 之恶能枯燥的学.
#4 说的是有道理的. 你所有的这些数据结构都是有人做好了轮子了. 如果你只是要打出能用的代码来说的话, 网上几乎都能找到现成的. 但是你现在才大一,时间超级充分, 所以是更建议你知其所以然. 以后无论是考研还是工作, 这个都是必然要用到的. |