背景介绍

之前有人问过数据结构怎么学,这里我给出自己的答案,每个人的思维习惯不同,生活阅历不同,所以本文内容仅供参考。

1、格局

我是站长,今天来给大家谈谈数据结构的学习之道吧。为了学好数据结构,很多人都在刷题,这种做法对吗?对。但是这种做法太浅薄了。刷题的行为就是一块敲门砖,门敲开了,砖扔了,日后在工作中很少再用到数据结构。

很多人通过刷题,拿到了offer,这就是刷题的好处。LeetCode的目的就是让你通过面试,你通过了面试,LeetCode的目标就完成了。它可不管你以后是否真正的把知识用上。

数据结构的学习不仅是刷题,更是一种格局。计算机分为两大功能:计算和存储。数据结构的学习要结合存储来学习,这种做法才算是大的格局。格局只要定了,学好数据结构是迟早的事。因为好的开头等于成功的一半。

有的小公司,它的目标就是赚快钱,它的格局就限制了它的发展,很难把公司做大,道理类似,一个人的发展跟格局有关。格局这种东西看似很虚,远不如刷题来的实在,但是随着时间的推移和年龄的增长,虚的东西慢慢就会实化。当认识到格局很重的时候,人往往已经老了,所以建议年轻的IT码农,建立大的格局,路子才越走越宽。

2、切入

中国话,特别有意思,怎么说都有道理。对于格局而言,好的开头等于成功的一半,对于切入而言,一样适用。数据结构有好几种,虽然不多,但是变化莫测,从哪里去切入呢?从图开始切入行吗?不太好,本身数据结构教材就没有花费很多笔墨讲“图”这个东西。没有足够的知识,难以支撑你对它的熟悉。哪到底从什么地方切入呢?我觉得,可以从树切入,也可以从数组切入。

我玩的最好的是数组,这来源于一段切身经历。当初我搞C/C++的时候,总是被数组的语法规范搞晕,我感觉有点奇怪,这么简单的数据结构怎么搞出这么多的花花肠子呢?当我花费了很多时间把数组的语法规范搞清楚的时候,我突然灵光一闪,好像发现了点什么。这种感觉很难用语言来描述,我感觉到数组是很伟大的东西,抱着着这把“锤子”,我发现到处都是“钉子”,很多东西都可以跟数组扯上关系,例如,我最大的发现就是:哈希本质就是数组。在有的编程语言里面,比如shell和PHP里面,有个“关联数组”这么个东西,关联数组是一种具有特殊索引方式的数组,不仅可以通过整数来索引它,还可以使用字符串或者其他类型的值(除了NULL)来索引。看到了吧,这就是哈希啊,只不过叫数组罢了。

其实,关于数组的内容,我可以讲上好几个小时。因为我储备了大量的数组知识。除了数组以外,我玩的比较好的还有树。树这个东西也很有意思。红黑树的“红”和“黑”两色来源的考证就我提出来的,有点老生常谈了,大家可以在本站搜索到的,在此略过了。

3、内在联系

面对一个一个的单点(例如数组,树),我都是通过积累大量的知识,然后获得境界的提升。人的认知是不会止步的。单个数据结构玩好了之后,我会慢慢感受它们之间的内部联系。以树和链表为例,它们是有内在联系的。这种联系可能基于神经元底层复杂的网状结构(如下图所示)。因为掌握的比较好,所以神经突触特别多,所以能发现更多的联系。我觉得,从阳面来说,树就树,从阴面来说,树就是链表,这就是内在联系。

发现内在联系,也算是长期思考和修行之后的一种绝活吧。恕我不能公开更多内容,最有价值的东西我想传授给徒弟们。

4、小结

总之,我个人建议的数据结构学习之路是这样的:格局->切入(单点)->积累(单点)->突破(单点)->内在联系(多点)

标签: none

添加新评论