当前位置:首页 > 公众号精选 > 程序员小灰
[导读]前几天,小灰给大家介绍了什么是算法。说到算法,就不能不说起数据结构。今天我来讲一讲,什么是数据结构?程序员怎么学好数据结构?我们介绍算法的时候说过,计算机当中的算法,本质就是一系列程序指令,用以解决特定的运算和逻辑问题。而所谓数据结构,是数据的组织、管理和存储格式。简单理解的话,...

前几天,小灰给大家介绍了什么是算法。



说到算法,就不能不说起数据结构。今天我来讲一讲,什么是数据结构?程序员怎么学好数据结构?



我们介绍算法的时候说过,计算机当中的算法,本质就是一系列程序指令,用以解决特定的运算和逻辑问题。



而所谓数据结构,是数据的组织、管理和存储格式。简单理解的话,数据结构就是执行算法的“原材料”。



俗话讲,巧妇难为无米之炊。算法,就好比是聪明勤劳的女主人,而数据结构,就是用来做饭做菜的柴米油盐。





数据结构都有哪些组成方式呢?



首先,是线性结构



但凡有过一点编程基础的小伙伴,肯定都知道数组,这就是一种典型的线性数据结构。



除了数组以外,链表也是一种重要的数据结构。Java集合框架中的LinkList类,底层实现就是链表。


以数组或者链表为基础,可以封装出两种数据结构,一个是栈,它的特点是先进后出;另一个是队列,它的特点是先进先出。栈和队列,可以满足不同的特定需求。


其次,是



树,是一类一对多的数据结构,天生就非常适合用来检索。Java集合框架当中有一个TreeMap类,用于存储键和值的映射,不但查找很高效,还能保证键的有序排列。它的底层实现就是一种名为红黑树的特殊二叉树。





另外,我们操作系统当中的文件索引,有很多都是用B树实现的。


而我们常用的MySQL数据库,以B 树作为常用索引。





再其次,是



图,是一类多对多的数据结构,非常适合用于表述众多对象之间的复杂关系。大家肯定都乘坐过地铁,一个城市的地铁交通线路,站与站之间形成的关联,就是一个图结构。





在一群人之间,有着复杂的人际交往关系,他们所形成的的关系网络也是一个图结构。





在图的基础上,产生了许多实用的算法。比如,我们用百度地图或者高德地图进行导航的时候,背后就是图的最短路径算法。



最后,还有一些复合数据结构



比如咱们常用的哈希表,它的组成就是数组和链表的结合。





还有一种比较有意思的数据结构叫做跳表,它在普通链表的基础上,增加了很多个索引层。Redis当中的集合 sortedSet,背后的数据结构就是跳表。





复合数据结构,往往结合了多种基础数据结构当然优势,在特定的场景下非常有用。



这就是数据结构的几种组成方式,大家可以把这张图保存一下。由于篇幅原因,图里面所列出的具体数据结构,只是最最常用的几种,并非全部。






那么,我们该如何学好数据结构呢?



就像学习算法一样,我们同样可以通过看书、看网上的视频课程,来了解常用的数据结构原理。



入门级别的书,比较推荐程杰老师的《大话数据结构》,以及我自己出版的《漫画算法》系列。





进阶级别的书,推荐看看《算法4》、《算法导论》。



课程的话,推荐极客时间王争老师的《数据结构与算法之美》,讲的非常全面。



此外,我们也可以动手去写代码,自己实现数据结构的基本功能,这样印象会很深刻。



像红黑树这么复杂的数据结构,一上来可能很难直接写出来。我们可以从简单的开始,比如尝试实现一个链表的添加节点和删除节点功能,比如实现二叉树的前序、中序、后序遍历,等等。



最后,有些网站,会提供可视化的数据结构演示,非常生动。小伙伴们可以去这些网站看看。比如visuAlgo这个网站,就有着很丰富的案例。





大家还关注过哪些算法与数据结构的教学网站,也欢迎在留言区写出。



好了,关于数据结构,我就给大家介绍到这里。如果觉得这篇文章对你有帮助,希望可以点个在看点个赞,感谢大家~~



最近,小灰尝试走出舒适区,入驻B站开始录制程序员相关的视频。欢迎大家关注小灰的B站号【我是程序员小灰】,给个一键三连,感谢支持哦~~


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

(全球TMT2022年7月11日讯)7月7日,由径硕科技(JINGdigital)主办、MEC睿达会承办的“万数有灵·2022中国数字营销创新增长峰会”在深圳举行。作为一家营销科技公司,径硕科技提供的是一流的营销软件产...

关键字: CE DIGITAL 数字化 数据结构

Redis为什么那么快?除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis能高效的处理。因此,这次我们就来好好聊一下Redis数据结构,...

关键字: 数据结构 REDIS 字符串 节点

哈喽,大家好,我是瓜哥,致力于分享互联网各领域干货。前几天,有人问瓜哥,学习编程语言有什么好的建议没?今天简单和大家分享几点学习编程的建议,希望可以帮助到大家。1.只要开始,就不要怕晚瓜哥经常看到这些问题,大四学编程还来...

关键字: 编程 代码 基础知识 数据结构

模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性。

关键字: 模块化 软件模块 数据结构

大家好,我是小林。前几天发了一篇「为了拿捏Redis数据结构,我画了20张图」,收获了很多好评,但是当时急于发文,有些地方没有写完,也有些地方写的不是很完善。然后我最近花了很多时间来完善文章,不仅加入了Redis新版本的...

关键字: 数据结构 REDIS 节点 字符串

大家好,我是小林。Redis为什么那么快?除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis能高效的处理。因此,这次我们就来好好聊一下R...

关键字: 数据结构 REDIS

Redis为什么那么快?除了它是内存数据库,使得所有的操作都在内存上进行之外,还有一个重要因素,它实现的数据结构,使得我们对数据进行增删查改操作时,Redis能高效的处理。因此,这次我们就来好好聊一下Redis数据结构,...

关键字: 数据结构

摘 要:大数据是从各种各样来源中搜集得到的海量数据信息的总称。从大数据的数据结构看, 大约90%的数据是非结构化的,同时也也面临复杂,性、安全和隐私风险等新挑战。文章分析了企 业的大数据应用,也提出了国家和政府部门未来建...

关键字: 大数据 政府部门 企业 数据结构

最近在看数模的东西的时候发现了图和网络这一块涉及到了数据结构中的一些概念,于是将之前总结的数据结构拿出来看一下,也当是复习,有需要查找的直接control + F查找

关键字: 数据结构 概念

程序员小灰

379 篇文章

关注

发布文章

编辑精选

技术子站

关闭