漫谈数据结构系列(一)之僧敲月下门

为什么需要学习数据结构?

现在各种各样的库和框架层出不穷,越来越多的人热衷于学习各种框架,而对于数据结构,算法等计算机中最精华的部分却置若罔闻。三年的时间对于一个框架而言有可能是从生到死的过程,而三年前的数据结构和三年后的数据结构基本不会有变化。俗话说以不变应万变,不变的数据结构,千变万化的框架,我们只要牢牢抓住不变,则万变不离其宗。当我们抓住问题的本质,思考问题的方式和看问题的高度也就不一样了。这也是从码农到真正的会思考的程序员的必经之路。

如何理解数据结构数据结构?

数据结构,我们从字面上来看,可以把它分为数据和结构两个部分,数据我们可以理解为信息,比如说我们的姓名,性别啊等等。我们需要把这些信息存储到计算机当中去,我们该如何去存储这些数据呢?我们需要用到不同的结构去存储这些数据。有人可能会问为什么要用不同的结构呢?答案是因地制宜,合适的才是最好。我们为什么要使用计算机,就是因为计算机能够提高我们的效率,而使用不同的数据结构可以提高我们的效率,所以我们对于不同的数据,不同的用途采用不同的数据结构。
上面我们说到了数据结构就是数据在计算机中存储的形式,以及为什么我们要使用不同的数据结构。今天我们所学的数据结构都是前人根据实践而总结出来的对于某些数据存储的一些比较好解决方案。

说起来可能比较抽象,我们用一个例子来说明这个问题。想想我们高中每次考试的排名表,从第一名到最后一名,按顺序排列下来。其实这就是一种数据结构,叫做顺序表。那么为什么我们要采用这种数据结构呢,因为它便于查找。比如我们想看看全班第23名是谁,我们直接看看标号23是谁就行了,是不是很快很简单。那么顺序表是不是完美无缺呢?那是不可能的。就像我们之前说的,数据结构之所以出现就是为了因地制宜,没有那哪一种数据结构可以说完美无缺。没有完美的数据结构,只有最合适的数据结构。我们再次回到线性表,假如之前漏掉一个同学,后来发现了,我们肯定要把这个同学加到我们的表上来,再假设那位同学刚好成绩比表上了23名分数高比22分数低,说明他才是第23名,那我们要怎么办呢,我们把他插到表里面去,把他标为23名,之前的23改为24,24改为25,依次类推,假如这是年级大表,可能有几百人要改,是不是很麻烦。顺序表的劣势就显现出来了。顺序表它的优势是查找,它的劣势是增加和删除数据。
如果我们的数据需要经常进行查找操作,我们可以优先考虑顺序表,如果经常需要,插入,删除数据我们应该使用什么数据结构呢?我们可以使用一种叫做链表的数据结构。之后还有栈,队列 ,树和图,这些结构都不相同,有一点是共同的,那就是因地制宜。

如何学习数据结构?

说到如何学习数据结构,我们先回到我们今天的题目漫谈数据结构系列(一)之僧敲月下门,不知道大家有没有听过贾岛“推敲”的故事。就是有一位诗人贾岛,他写了一首诗,前一句是“鸟宿池边树”,但是对于下一句他在“僧推月下门”和“僧敲月下门”之间纠结,一路上都在想,结果太入神,冲撞了韩愈的车驾。后来韩愈得知他是在写诗,并没有怪罪他,而且还建议他“僧敲月下门”更好,以动衬静更能显示月夜的安静。从此“推敲”就流传下来。用来比喻做文章或做事时,反复琢磨,仔细斟酌。我们之前说过数据结构就是要因地制宜,所以当我们学习和要用一种数据结构的时候我们就应该多想想,为什么我要用这种数据结构而不是另一种,这样对于各种数据结构的优缺点才能有更深刻的理解。

还有就是纸上得来终觉浅,觉知此事要躬行。看起来都会,写起来就不一定了。没有代码量的积累,很难有所提高。量变才能引起质变。

最后当然是继续关注接下来的文章,让我们一起敲开数据结构的大门。以不变应万变。

最后的最后,点赞就是最大的支持。更多精彩内容和学习资料可以关注微信公众号QStack,追寻最纯粹的技术,享受编程的快乐。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值