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

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

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

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

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

如何学习数据结构?

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

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

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

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

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

  1. 漫谈数据结构系列(二)之千里姻缘一“线”牵

    前言 前一篇文章我们了解了什么是数据结构以及为什么要学习数据结构.还记得选择数据结构的原则吗?那就是"因地制宜,适合的就是最好的".今天我们就将正式敲开数据结构的大门.和上一篇文章 ...

  2. 《C++0x漫谈》系列之:Concept, Concept!

    <C++0x漫谈>系列之:Concept, Concept! By 刘未鹏(pongba) C++的罗浮宫(http://blog.csdn.net/pongba) <C++0x漫谈 ...

  3. 抖音小店运营全套系列课,系统掌握月销100w+小店的核心秘密

    抖音小店运营全套系列课,系统掌握月销100w+小店的核心秘密 从小店基础入门到进阶精通,全新升级 兴趣电商+搜索电商 双剑合璧 1.目前抖音日活跃量用户已经突破6亿,平台用户规模庞大且拥有消费能力,管 ...

  4. 【Python数据结构系列】❤️《栈(顺序栈与链栈)》——❤️知识点讲解+代码实现

    灵魂拷问:为什么要学数据结构? 数据结构,直白地理解,就是研究数据的存储方式.数据存储只有一个目的,即为了方便后期对数据的再利用.因此,数据在计算机存储空间的存放,决不是胡乱的,这就要求我们选择一种好 ...

  5. 卜若的代码笔记-数据结构系列-第十二章:栈三.链栈

    1.太简单了,不介绍了,直接贴代码,有问题请看10,11,章 //测试代码public static void main(String[] args) throws IOException {Link ...

  6. 数据结构与算法邹永林PDF_真香系列:耗时大半个月收整全套「Java架构进阶pdf」没白费,终于可以安心备战2021了!...

    2021就这么来了,马上就要开启备战今年的"金三银四"了.辛亏在2020的最后半月花了我大半个月时间收整了全套的「Java架构进阶pdf」,这一波下来,刷完你就会知道,真真香啊,我 ...

  7. 数据结构与算法 pdf_整理一个月完成的数据结构与算法PDF和测试代码免费拿

    点击上方「10分钟编程」关注我呦 让我们每天「博学」一点点 数据结构与算法 作为一名2021届的学生,今年7月份就要面临秋招了,那么对于应届生来说,要想脱颖而出,笔试就显得太重要了,算法题是笔试环节的 ...

  8. 菜鸟自学数据结构系列——(一)如何写出能够在VC下运行的单链表生成程序

    最近打算自学数据结构,于是就在网上淘了两本书,一本是清华大学出版社出的严蔚敏老师的数据结构,一本是程杰的大话数据结构.直接看严老师的那一本实再是很吃力.于是我就先看大话的内容后,在深入的看严老师的书. ...

  9. 从C语言的角度重构数据结构系列(三)- 顺序存储结构和链式存储结构之顺序表

    前言 在学习具体的数据结构和算法之前,每一位初学者都要掌握一个技能,即善于运用时间复杂度和空间复杂度来衡量一个算法的运行效率. 在这里给自己打个广告,需要的小伙伴请自行订阅. python快速学习实战 ...

  10. 从C语言的角度重构数据结构系列(二)-如何衡量一个算法的优劣?

    前言 在学习具体的数据结构和算法之前,每一位初学者都要掌握一个技能,即善于运用时间复杂度和空间复杂度来衡量一个算法的运行效率. 在这里给自己打个广告,需要的小伙伴请自行订阅. python快速学习实战 ...

最新文章

  1. mysql 联接结果集函数_Oracle 中函数如何返回结果集
  2. 计算机视觉库OpenCV初步了解
  3. Gstreamer编程
  4. 江苏计算机信息录入技师选拔考试题,2010年江苏省机关事业单位工人技师资格选拔考试试卷...
  5. 修饰性形容词-big、good、high_35
  6. 中国电信:1月5G套餐用户数净增826万户
  7. Atitit it计算机应用体系图  大数据 爬虫 非结构数据 nosql redis mongodb 分布式存储 es搜索 可视化 多媒体与office 19.1. 14.3 计
  8. DEM数据基本概念介绍
  9. mysql数据库接收不了中文乱码_mysql数据库 中文乱码
  10. gre 填空64-77
  11. Ubuntu下读取Xbox360手柄输出
  12. SAP系统里的统驭科目
  13. 【crossbeam系列】3 crossbeam-deque:work-stealing算法
  14. 华为畅享max什么时候鸿蒙,华为鸿蒙系统正式推送 具体怎么样及支持哪些手机带你前先看...
  15. 计算机毕业设计、计算机课程设计怎么做?计算机设计1900套来帮你!
  16. MPLS option-A
  17. 深圳 IT 男打人后疯狂凡尔赛,还教育民警,这回把 IT 人的脸都丢尽了……
  18. 全国计算机一级考试试题大题,全国计算机等级考试一级考试练习(新大纲)试题及答案...
  19. 计算机应用技术英语音标,英语国际音标
  20. 尚硅谷在线教育项目的坑

热门文章

  1. vue实现在canvas画布上实现绘制涂抹功能
  2. tpshop 微信提现转账
  3. 实现图片在时间轴左右交替放置
  4. 程序设计基础课程设计——学生成绩管理程序
  5. .frm mysql_mysqlfrm使用
  6. R语言︱常用统计方法包+机器学习包(名称、简介)
  7. 图像处理——中值滤波
  8. Rdt2.1 和 Rdt2.2的详细解释
  9. WIN7 通知栏处喇叭上有个小红叉,提示未插入“未插入扬声器或耳机”的解决方法
  10. 阿里云 vps云监控插件已停止状态解决方法